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 @@
- -
+ +