diff --git a/config/playwright/collectCoverage.js b/config/playwright/collectCoverage.js
new file mode 100644
index 0000000..2ed7237
--- /dev/null
+++ b/config/playwright/collectCoverage.js
@@ -0,0 +1,44 @@
+const fs = require('fs');
+const { execSync } = require("child_process");
+const { basename, dirname, join } = require('path');
+const v8toIstanbul = require('v8-to-istanbul');
+
+const tmpCoveragePath = './.coverage/.nycPlaywright';
+const reportDir = './.coverage/playwright';
+
+
+module.exports = {
+ collectCoverage: async (coverageOutputDir, sourceDir, coverage, testfile) => {
+ // eslint-disable-next-line no-restricted-syntax
+ for (const entry of coverage) {
+ process.chdir(sourceDir);
+ const converter = v8toIstanbul('', 0, { source: entry.source });
+ // eslint-disable-next-line no-await-in-loop
+ await converter.load();
+ converter.applyCoverage(entry.functions);
+
+ const coveragePath = join(
+ coverageOutputDir,
+ `${tmpCoveragePath}/${basename(dirname(testfile))}_${Date.now()}.json`
+ );
+ fs.mkdirSync(dirname(coveragePath), { recursive: true });
+ fs.writeFileSync(coveragePath, JSON.stringify(converter.toIstanbul()));
+ }
+ },
+ mergeCoverage: async () => {
+ if(fs.existsSync(tmpCoveragePath)) {
+ const mergeDestination = join(tmpCoveragePath, `merged_${Date.now()}.json`)
+ execSync(`nyc merge ${tmpCoveragePath} ${mergeDestination}`);
+ const files = fs.readdirSync(tmpCoveragePath);
+ files.forEach((file) => {
+ const filePath = join(tmpCoveragePath, file);
+ if (filePath !== mergeDestination) {
+ fs.rmSync(filePath);
+ }
+ });
+
+ execSync(`nyc report --reporter=lcov --reporter=text --report-dir=${reportDir} --temp-dir=${tmpCoveragePath}`, {stdio:'inherit' });
+ fs.rmSync(tmpCoveragePath, { recursive: true });
+ }
+ }
+}
\ No newline at end of file
diff --git a/package.json b/package.json
index 6e4f74f..b1b24f8 100644
--- a/package.json
+++ b/package.json
@@ -41,6 +41,7 @@
"jest": "^28.1.1",
"jest-environment-jsdom": "^28.1.1",
"node-sass": "^7.0.1",
+ "nyc": "^15.1.0",
"playwright": "^1.22.2",
"playwright-chromium": "^1.22.2",
"playwright-core": "^1.22.2",
@@ -61,7 +62,8 @@
"should": "^13.2.3",
"tslib": "^2.4.0",
"typescript": "^4.7.4",
- "utf-8-validate": "^5.0.2"
+ "utf-8-validate": "^5.0.2",
+ "v8-to-istanbul": "^9.0.1"
},
"scripts": {
"test": "yarn workspaces run test",
diff --git a/packages/overlayscrollbars/package.json b/packages/overlayscrollbars/package.json
index 4513d20..e7a77fb 100644
--- a/packages/overlayscrollbars/package.json
+++ b/packages/overlayscrollbars/package.json
@@ -15,6 +15,7 @@
"test:browser:quick": "jest --runInBand --detectOpenHandles --selectProjects browser --testPathIgnorePatterns=\"/node_modules/|/structureLifecycle/\"",
"test:browser-dev": "jest --runInBand --detectOpenHandles --selectProjects browser-dev --testPathPattern",
"build": "rollup -c",
- "test:playwright": "playwright test"
+ "test:playwright": "playwright test",
+ "posttest:playwright": "node playwright.coverage.js"
}
}
diff --git a/packages/overlayscrollbars/playwright.coverage.js b/packages/overlayscrollbars/playwright.coverage.js
new file mode 100644
index 0000000..59b3040
--- /dev/null
+++ b/packages/overlayscrollbars/playwright.coverage.js
@@ -0,0 +1 @@
+require('../../playwright.coverage.base');
diff --git a/packages/overlayscrollbars/src/styles/trinsicobserver.scss b/packages/overlayscrollbars/src/styles/trinsicobserver.scss
index 5c7e936..0172a57 100644
--- a/packages/overlayscrollbars/src/styles/trinsicobserver.scss
+++ b/packages/overlayscrollbars/src/styles/trinsicobserver.scss
@@ -2,7 +2,7 @@
flex: none;
box-sizing: border-box;
position: relative;
- max-width: 1px;
+ max-width: 0px;
max-height: 1px;
padding: 0;
margin: 0;
@@ -10,7 +10,7 @@
overflow: hidden;
z-index: -1;
height: 0;
- top: calc(-100% + 1px);
+ top: calc(100% + 1px);
contain: strict;
&:not(:empty) {
diff --git a/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.html b/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.html
index 78ce281..c7d4ce8 100644
--- a/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.html
+++ b/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.html
@@ -1,6 +1,6 @@
-
-
+
+