diff --git a/components/button/package.json b/components/button/package.json
index a2cda18e4..882a96ec1 100644
--- a/components/button/package.json
+++ b/components/button/package.json
@@ -16,7 +16,8 @@
"docs": "node ./scripts/docs-gen.js",
"start": "node ./scripts/webpack.build.js -- demo",
"build": "node ./scripts/webpack.build.js -- build && rollup -c scripts/rollup.config.js && node ./scripts/rollup.end.js",
- "test": "web-test-runner \"test/*.test.js\" --node-resolve"
+ "test": "web-test-runner \"test/*.test.js\" --node-resolve",
+ "test:watch": "web-test-runner \"test/*.test.js\" --node-resolve --watch"
},
"typings": "./dist/index.d.ts",
"repository": {
@@ -71,6 +72,7 @@
"rollup-plugin-scss": "^2.4.0",
"rollup-plugin-typescript": "^1.0.1",
"sass-loader": "^7.1.0",
+ "sinon": "^11.1.1",
"style-loader": "^0.23.1",
"to-string-loader": "^1.1.5",
"ts-loader": "^5.4.4",
diff --git a/components/button/test/button.test.js b/components/button/test/button.test.js
index bbb4684bc..921ba510e 100644
--- a/components/button/test/button.test.js
+++ b/components/button/test/button.test.js
@@ -1,20 +1,86 @@
-import { html, fixture, expect } from '@open-wc/testing';
+import { html, fixture, expect } from '@open-wc/testing'
-import '../src/index.esm.js';
+import '../src/index.esm.js'
-describe('button testing', () => {
- it('Test Button innerText', async () => {
- const el = await fixture(html`
- Default
- `);
- console.log(el.innerText);
- expect(el.innerText).to.equal('Default');
- });
+const defaultProps = {
+ plain: false,
+ round: false,
+ circle: false,
+ loading: false,
+ disabled: false,
+ autofocus: false,
+ nativeType: 'button',
+ block: false,
+}
- it('Test Button Click', async () => {
- const el = await fixture(html`
- Default
- `);
- el.shadowRoot.querySelector('button').click();
- });
-});
+describe('Testing o-button', () => {
+ it('tests button with default props', async () => {
+ const el = await fixture(html` Default `)
+ const button = el.shadowRoot.querySelector('button')
+ const classList = button.getAttribute('class').split(' ')
+ expect(classList.includes('o-button')).to.be.true
+ })
+
+ it('tests setting type', async () => {
+ const el = await fixture(html`
+ Primary
+ `)
+ const button = el.shadowRoot.querySelector('button')
+ const classList = button.getAttribute('class').split(' ')
+ expect(classList.includes('o-button-primary')).to.be.true
+ })
+
+ it('tests setting disabled', async () => {
+ const el = await fixture(html` Disabled `)
+ const button = el.shadowRoot.querySelector('button')
+ const classList = button.getAttribute('class').split(' ')
+ expect(button.getAttribute('disabled')).to.equal('')
+ expect(classList.includes('is-disabled')).to.be.true
+ })
+
+ it('tests setting plain', async () => {
+ const el = await fixture(html` Plain `)
+ const button = el.shadowRoot.querySelector('button')
+ const classList = button.getAttribute('class').split(' ')
+ expect(classList.includes('is-plain')).to.be.true
+ })
+
+ it('tests setting size', async () => {
+ const el = await fixture(html` Medium `)
+ const button = el.shadowRoot.querySelector('button')
+ const classList = button.getAttribute('class').split(' ')
+ expect(classList.includes('o-button-medium')).to.be.true
+ })
+
+ it('tests setting round', async () => {
+ const el = await fixture(html` Round `)
+ const button = el.shadowRoot.querySelector('button')
+ const classList = button.getAttribute('class').split(' ')
+ expect(classList.includes('is-round')).to.be.true
+ })
+
+ it('tests setting circle', async () => {
+ const el = await fixture(html` Circle `)
+ const button = el.shadowRoot.querySelector('button')
+ const classList = button.getAttribute('class').split(' ')
+ expect(classList.includes('is-circle')).to.be.true
+ })
+
+ it('tests setting block', async () => {
+ const el = await fixture(html` Block `)
+ const button = el.shadowRoot.querySelector('button')
+ const classList = button.getAttribute('class').split(' ')
+ expect(classList.includes('is-block')).to.be.true
+ })
+
+ it('tests setting loading', async () => {
+ const el = await fixture(html` Loading `)
+ const svg = el.shadowRoot.querySelector('svg')
+ expect(svg).to.not.be.null
+ })
+
+ it('passes the a11y audit', async () => {
+ const el = await fixture(html` `)
+ expect(el).shadowDom.to.be.accessible()
+ })
+})