diff --git a/package-lock.json b/package-lock.json
index e61d7cd..8a132b1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,8 +12,10 @@
"@commitlint/cli": "^19.0.0",
"@commitlint/config-conventional": "^19.0.0",
"@neovici/cfg": "^1.20.1",
+ "@open-wc/testing": "^4.0.0",
"@semantic-release/changelog": "^6.0.0",
"@semantic-release/git": "^10.0.0",
+ "@types/mocha": "^10.0.6",
"husky": "^9.0.0",
"prettier": "^3.0.0",
"semantic-release": "^23.0.0",
@@ -878,6 +880,15 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/@esm-bundle/chai": {
+ "version": "4.3.4-fix.0",
+ "resolved": "https://registry.npmjs.org/@esm-bundle/chai/-/chai-4.3.4-fix.0.tgz",
+ "integrity": "sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw==",
+ "dev": true,
+ "dependencies": {
+ "@types/chai": "^4.2.12"
+ }
+ },
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.14",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
@@ -958,6 +969,21 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@lit-labs/ssr-dom-shim": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz",
+ "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==",
+ "dev": true
+ },
+ "node_modules/@lit/reactive-element": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz",
+ "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==",
+ "dev": true,
+ "dependencies": {
+ "@lit-labs/ssr-dom-shim": "^1.2.0"
+ }
+ },
"node_modules/@mdn/browser-compat-data": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.2.1.tgz",
@@ -1183,6 +1209,57 @@
"@octokit/openapi-types": "^22.0.0"
}
},
+ "node_modules/@open-wc/dedupe-mixin": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@open-wc/dedupe-mixin/-/dedupe-mixin-1.4.0.tgz",
+ "integrity": "sha512-Sj7gKl1TLcDbF7B6KUhtvr+1UCxdhMbNY5KxdU5IfMFWqL8oy1ZeAcCANjoB1TL0AJTcPmcCFsCbHf8X2jGDUA==",
+ "dev": true
+ },
+ "node_modules/@open-wc/scoped-elements": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@open-wc/scoped-elements/-/scoped-elements-3.0.5.tgz",
+ "integrity": "sha512-q4U+hFTQQRyorJILOpmBm6PY2hgjCnQe214nXJNjbJMQ9EvT55oyZ7C8BY5aFYJkytUyBoawlMpZt4F2xjdzHw==",
+ "dev": true,
+ "dependencies": {
+ "@open-wc/dedupe-mixin": "^1.4.0",
+ "lit": "^3.0.0"
+ }
+ },
+ "node_modules/@open-wc/semantic-dom-diff": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.20.1.tgz",
+ "integrity": "sha512-mPF/RPT2TU7Dw41LEDdaeP6eyTOWBD4z0+AHP4/d0SbgcfJZVRymlIB6DQmtz0fd2CImIS9kszaMmwMt92HBPA==",
+ "dev": true,
+ "dependencies": {
+ "@types/chai": "^4.3.1",
+ "@web/test-runner-commands": "^0.9.0"
+ }
+ },
+ "node_modules/@open-wc/testing": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-4.0.0.tgz",
+ "integrity": "sha512-KI70O0CJEpBWs3jrTju4BFCy7V/d4tFfYWkg8pMzncsDhD7TYNHLw5cy+s1FHXIgVFetnMDhPpwlKIPvtTQW7w==",
+ "dev": true,
+ "dependencies": {
+ "@esm-bundle/chai": "^4.3.4-fix.0",
+ "@open-wc/semantic-dom-diff": "^0.20.0",
+ "@open-wc/testing-helpers": "^3.0.0",
+ "@types/chai-dom": "^1.11.0",
+ "@types/sinon-chai": "^3.2.3",
+ "chai-a11y-axe": "^1.5.0"
+ }
+ },
+ "node_modules/@open-wc/testing-helpers": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-3.0.0.tgz",
+ "integrity": "sha512-zkR39b7ljH/TqZgzBB9ekHKg1OLvR/JQYCEaW76V0RuASfV/vkgx2xfUQNe8DlEOLOetRZ3agFqssEREF45ClA==",
+ "dev": true,
+ "dependencies": {
+ "@open-wc/scoped-elements": "^3.0.2",
+ "lit": "^2.0.0 || ^3.0.0",
+ "lit-html": "^2.0.0 || ^3.0.0"
+ }
+ },
"node_modules/@playwright/test": {
"version": "1.43.0",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.43.0.tgz",
@@ -1976,6 +2053,21 @@
"@types/node": "*"
}
},
+ "node_modules/@types/chai": {
+ "version": "4.3.14",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.14.tgz",
+ "integrity": "sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==",
+ "dev": true
+ },
+ "node_modules/@types/chai-dom": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/@types/chai-dom/-/chai-dom-1.11.3.tgz",
+ "integrity": "sha512-EUEZI7uID4ewzxnU7DJXtyvykhQuwe+etJ1wwOiJyQRTH/ifMWKX+ghiXkxCUvNJ6IQDodf0JXhuP6zZcy2qXQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/chai": "*"
+ }
+ },
"node_modules/@types/co-body": {
"version": "6.1.3",
"resolved": "https://registry.npmjs.org/@types/co-body/-/co-body-6.1.3.tgz",
@@ -2155,6 +2247,12 @@
"integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
"dev": true
},
+ "node_modules/@types/mocha": {
+ "version": "10.0.6",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz",
+ "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==",
+ "dev": true
+ },
"node_modules/@types/node": {
"version": "20.12.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.6.tgz",
@@ -2221,6 +2319,37 @@
"@types/send": "*"
}
},
+ "node_modules/@types/sinon": {
+ "version": "17.0.3",
+ "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz",
+ "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==",
+ "dev": true,
+ "dependencies": {
+ "@types/sinonjs__fake-timers": "*"
+ }
+ },
+ "node_modules/@types/sinon-chai": {
+ "version": "3.2.12",
+ "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz",
+ "integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/chai": "*",
+ "@types/sinon": "*"
+ }
+ },
+ "node_modules/@types/sinonjs__fake-timers": {
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz",
+ "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==",
+ "dev": true
+ },
+ "node_modules/@types/trusted-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "dev": true
+ },
"node_modules/@types/ws": {
"version": "7.4.7",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz",
@@ -3050,6 +3179,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/axe-core": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.0.tgz",
+ "integrity": "sha512-H5orY+M2Fr56DWmMFpMrq5Ge93qjNdPVqzBv5gWK3aD1OvjBEJlEzxf09z93dGVQeI0LiW+aCMIx1QtShC/zUw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/b4a": {
"version": "1.6.6",
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
@@ -3279,6 +3417,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/chai-a11y-axe": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/chai-a11y-axe/-/chai-a11y-axe-1.5.0.tgz",
+ "integrity": "sha512-V/Vg/zJDr9aIkaHJ2KQu7lGTQQm5ZOH4u1k5iTMvIXuSVlSuUo0jcSpSqf9wUn9zl6oQXa4e4E0cqH18KOgKlQ==",
+ "dev": true,
+ "dependencies": {
+ "axe-core": "^4.3.3"
+ }
+ },
"node_modules/chalk": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
@@ -6970,6 +7117,37 @@
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true
},
+ "node_modules/lit": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.2.tgz",
+ "integrity": "sha512-VZx5iAyMtX7CV4K8iTLdCkMaYZ7ipjJZ0JcSdJ0zIdGxxyurjIn7yuuSxNBD7QmjvcNJwr0JS4cAdAtsy7gZ6w==",
+ "dev": true,
+ "dependencies": {
+ "@lit/reactive-element": "^2.0.4",
+ "lit-element": "^4.0.4",
+ "lit-html": "^3.1.2"
+ }
+ },
+ "node_modules/lit-element": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.4.tgz",
+ "integrity": "sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==",
+ "dev": true,
+ "dependencies": {
+ "@lit-labs/ssr-dom-shim": "^1.2.0",
+ "@lit/reactive-element": "^2.0.4",
+ "lit-html": "^3.1.2"
+ }
+ },
+ "node_modules/lit-html": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.2.tgz",
+ "integrity": "sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==",
+ "dev": true,
+ "dependencies": {
+ "@types/trusted-types": "^2.0.2"
+ }
+ },
"node_modules/load-json-file": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
diff --git a/package.json b/package.json
index b910b53..30aa50b 100644
--- a/package.json
+++ b/package.json
@@ -62,8 +62,10 @@
"@commitlint/cli": "^19.0.0",
"@commitlint/config-conventional": "^19.0.0",
"@neovici/cfg": "^1.20.1",
+ "@open-wc/testing": "^4.0.0",
"@semantic-release/changelog": "^6.0.0",
"@semantic-release/git": "^10.0.0",
+ "@types/mocha": "^10.0.6",
"husky": "^9.0.0",
"prettier": "^3.0.0",
"semantic-release": "^23.0.0",
diff --git a/test/__snapshots__/cosmoz-collapse.test.snap.js b/test/__snapshots__/cosmoz-collapse.test.snap.js
new file mode 100644
index 0000000..8fbe720
--- /dev/null
+++ b/test/__snapshots__/cosmoz-collapse.test.snap.js
@@ -0,0 +1,12 @@
+/* @web/test-runner snapshot v1 */
+export const snapshots = {};
+
+snapshots["cosmoz-collapse renders opened"] =
+`
+
+ Lore ipsum
+
+
+`;
+/* end snapshot cosmoz-collapse renders opened */
+
diff --git a/test/cosmoz-collapse.test.ts b/test/cosmoz-collapse.test.ts
new file mode 100644
index 0000000..0b3546b
--- /dev/null
+++ b/test/cosmoz-collapse.test.ts
@@ -0,0 +1,11 @@
+import '../src/cosmoz-collapse';
+import { expect, html, fixture } from '@open-wc/testing';
+
+describe('cosmoz-collapse', () => {
+ it('renders opened', async () => {
+ const el = await fixture(
+ html`Lore ipsum
`,
+ );
+ await expect(el).dom.to.equalSnapshot();
+ });
+});
diff --git a/web-test-runner.config.mjs b/web-test-runner.config.mjs
index 22d722f..bec61cf 100644
--- a/web-test-runner.config.mjs
+++ b/web-test-runner.config.mjs
@@ -1,29 +1,16 @@
-import {
- chromeLauncher, defaultReporter
-} from '@web/test-runner';
-import { seleniumLauncher } from '@web/test-runner-selenium';
-import webdriver from 'selenium-webdriver';
-import firefox from 'selenium-webdriver/firefox.js';
+import cfg from '@neovici/cfg/web/test-runner.mjs';
export default {
- nodeResolve: true,
+ ...cfg,
coverageConfig: {
reportDir: 'coverage',
threshold: {
- statements: 70,
- branches: 70,
+ statements: 65,
+ branches: 65,
functions: 50,
- lines: 70
- }
+ lines: 65,
+ },
},
- files: [
- '**!(node_modules)/*.test.js'
- ],
- browsers: [
- chromeLauncher(),
- seleniumLauncher({
- driverBuilder: new webdriver.Builder().forBrowser('firefox').setFirefoxOptions(new firefox.Options().headless())
- })
- ]
+ testFramework: { config: { ui: 'bdd' } },
};