mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-05-17 08:49:40 +03:00
full coverage
This commit is contained in:
@@ -4,8 +4,10 @@
|
||||
"exports": {
|
||||
"./resolve": "./src/resolve.json",
|
||||
"./playwright": "./src/playwright.js",
|
||||
"./playwright.coverage": "./src/playwright.coverage.js",
|
||||
"./jest": "./src/jest.js",
|
||||
"./babel": "./src/babel.js"
|
||||
"./babel": "./src/babel.js",
|
||||
"./full-coverage": "./src/full-coverage.js"
|
||||
},
|
||||
"version": "0.0.0"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
module.exports = {
|
||||
tmpCoverageDirectory: './.coverage/.nycFull',
|
||||
coverageDirectory: './.coverage/full',
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
module.exports = {
|
||||
tmpCoverageDirectory: './.coverage/.nycPlaywright',
|
||||
coverageDirectory: './.coverage/playwright',
|
||||
};
|
||||
@@ -0,0 +1,51 @@
|
||||
#!/usr/bin/env node
|
||||
const fs = require('fs');
|
||||
const { execSync } = require('child_process');
|
||||
const { join, dirname, basename } = require('path');
|
||||
const { coverageDirectory, tmpCoverageDirectory } = require('@local/config/full-coverage');
|
||||
const { coverageDirectory: playwrightCoverage } = require('@local/config/playwright.coverage');
|
||||
const { coverageDirectory: jestCoverage } = require('@local/config/jest');
|
||||
|
||||
const reportFileName = 'coverage-final.json';
|
||||
|
||||
const copyReportFile = (path) => {
|
||||
if (fs.existsSync(path)) {
|
||||
if (!fs.existsSync(tmpCoverageDirectory)) {
|
||||
fs.mkdirSync(tmpCoverageDirectory);
|
||||
}
|
||||
fs.copyFileSync(
|
||||
path,
|
||||
join(tmpCoverageDirectory, `${basename(dirname(path))}_${Date.now()}.json`)
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
const generateFullCoverage = async () => {
|
||||
copyReportFile(join(playwrightCoverage, reportFileName));
|
||||
copyReportFile(join(jestCoverage, reportFileName));
|
||||
|
||||
const mergeDestination = join(tmpCoverageDirectory, `full_${Date.now()}.json`);
|
||||
execSync(`nyc merge ${tmpCoverageDirectory} ${mergeDestination}`);
|
||||
|
||||
const files = fs.readdirSync(tmpCoverageDirectory);
|
||||
files.forEach((file) => {
|
||||
const filePath = join(tmpCoverageDirectory, file);
|
||||
if (filePath !== mergeDestination) {
|
||||
fs.rmSync(filePath);
|
||||
}
|
||||
});
|
||||
|
||||
execSync(
|
||||
`nyc report --reporter=lcov --reporter=clover --reporter=json --report-dir=${coverageDirectory} --temp-dir=${tmpCoverageDirectory}`
|
||||
/* { stdio: 'inherit' } */
|
||||
);
|
||||
fs.rmSync(tmpCoverageDirectory, { recursive: true });
|
||||
};
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
await generateFullCoverage();
|
||||
} catch (e) {
|
||||
console.error(`Full coverage couldn't be generated.`, e);
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"private": true,
|
||||
"name": "@local/full-coverage",
|
||||
"bin": {
|
||||
"full-coverage": "./bin/generateFullCoverage.js"
|
||||
},
|
||||
"version": "0.0.0"
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env node
|
||||
const fs = require('fs');
|
||||
const { execSync } = require('child_process');
|
||||
const { join } = require('path');
|
||||
const { coverageDirectory, tmpCoverageDirectory } = require('@local/config/playwright.coverage');
|
||||
|
||||
const mergeCoverage = async () => {
|
||||
if (fs.existsSync(tmpCoverageDirectory)) {
|
||||
const mergeDestination = join(tmpCoverageDirectory, `merged_${Date.now()}.json`);
|
||||
execSync(`nyc merge ${tmpCoverageDirectory} ${mergeDestination}`);
|
||||
const files = fs.readdirSync(tmpCoverageDirectory);
|
||||
files.forEach((file) => {
|
||||
const filePath = join(tmpCoverageDirectory, file);
|
||||
if (filePath !== mergeDestination) {
|
||||
fs.rmSync(filePath);
|
||||
}
|
||||
});
|
||||
|
||||
execSync(
|
||||
`nyc report --reporter=lcov --reporter=text --reporter=clover --reporter=json --report-dir=${coverageDirectory} --temp-dir=${tmpCoverageDirectory}`,
|
||||
{ stdio: 'inherit' }
|
||||
);
|
||||
fs.rmSync(tmpCoverageDirectory, { recursive: true });
|
||||
}
|
||||
};
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
await mergeCoverage();
|
||||
} catch (e) {
|
||||
console.error(`Playwright coverage couldn't be merged.`, e);
|
||||
}
|
||||
})();
|
||||
@@ -2,6 +2,9 @@
|
||||
"private": true,
|
||||
"name": "@local/playwright-tooling",
|
||||
"main": "./src/index.js",
|
||||
"bin": {
|
||||
"playwright-merge-coverage": "./bin/mergeCoverage.js"
|
||||
},
|
||||
"types": "index.d.ts",
|
||||
"version": "0.0.0"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
const fs = require('fs');
|
||||
const { basename, dirname, join } = require('path');
|
||||
const v8toIstanbul = require('v8-to-istanbul');
|
||||
const { tmpCoverageDirectory } = require('@local/config/playwright.coverage');
|
||||
|
||||
module.exports = 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,
|
||||
`${tmpCoverageDirectory}/${basename(dirname(testfile))}_${Date.now()}.json`
|
||||
);
|
||||
fs.mkdirSync(dirname(coveragePath), { recursive: true });
|
||||
fs.writeFileSync(coveragePath, JSON.stringify(converter.toIstanbul()));
|
||||
}
|
||||
};
|
||||
@@ -1,43 +0,0 @@
|
||||
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 --reporter=clover --reporter=json --report-dir=${reportDir} --temp-dir=${tmpCoveragePath}`, {stdio:'inherit' });
|
||||
fs.rmSync(tmpCoveragePath, { recursive: true });
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ const { dirname } = require('path');
|
||||
const { rollup, watch: rollupWatch } = require('rollup');
|
||||
const { test } = require('@playwright/test');
|
||||
const createPlaywrightRollupConfig = require('@local/rollup/playwright');
|
||||
const { collectCoverage } = require('./coverage');
|
||||
const collectCoverage = require('./collectCoverage');
|
||||
|
||||
const createRollupBundle = async (testDir, watch = false) => {
|
||||
let server;
|
||||
@@ -79,4 +79,4 @@ module.exports = () => {
|
||||
test.afterAll(() => {
|
||||
close();
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
Generated
+7355
-1868
File diff suppressed because it is too large
Load Diff
+4
-8
@@ -41,8 +41,8 @@
|
||||
"eslint-plugin-react": "^7.30.0",
|
||||
"eslint-plugin-react-hooks": "^4.6.0",
|
||||
"glob": "^7.1.6",
|
||||
"jest": "^28.1.1",
|
||||
"jest-environment-jsdom": "^28.1.1",
|
||||
"jest": "^28.1.3",
|
||||
"jest-environment-jsdom": "^28.1.3",
|
||||
"node-sass": "^7.0.1",
|
||||
"nyc": "^15.1.0",
|
||||
"playwright": "^1.22.2",
|
||||
@@ -70,19 +70,15 @@
|
||||
"@local/tsconfig": "file:./local/tsconfig",
|
||||
"@local/config": "file:./local/config",
|
||||
"@local/rollup": "file:./local/rollup",
|
||||
"@local/full-coverage": "file:./local/full-coverage",
|
||||
"@local/playwright-tooling": "file:./local/playwright-tooling",
|
||||
"@local/browser-testing": "file:./local/browser-testing"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "yarn workspaces run test",
|
||||
"test:jsdom": "yarn workspaces run test:jsdom",
|
||||
"test:browser": "yarn workspaces run test:browser",
|
||||
"test:browser:quick": "yarn workspaces run test:browser:quick",
|
||||
"test:browser-dev": "yarn workspaces run test:browser-dev",
|
||||
"test:playwright": "yarn workspaces run test:playwright",
|
||||
"build": "yarn workspaces run build",
|
||||
"lint": "npx eslint --fix .",
|
||||
"aa": "echo hi",
|
||||
"root:some": "workspace-root aa"
|
||||
"lint": "npx eslint --fix ."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,14 +9,10 @@
|
||||
],
|
||||
"types": "types/index.d.ts",
|
||||
"scripts": {
|
||||
"test": "jest --coverage --runInBand --detectOpenHandles",
|
||||
"test:jsdom": "jest --coverage --runInBand --detectOpenHandles --testPathPattern",
|
||||
"test:browser": "jest --runInBand --detectOpenHandles --selectProjects browser --testPathPattern",
|
||||
"test:browser:quick": "jest --runInBand --detectOpenHandles --selectProjects browser --testPathIgnorePatterns=\"/node_modules/|/structureLifecycle/\"",
|
||||
"test:browser-dev": "jest --runInBand --detectOpenHandles --selectProjects browser-dev --testPathPattern",
|
||||
"posttest:jsdom": "full-coverage",
|
||||
"build": "rollup -c",
|
||||
"test:playwright": "playwright test",
|
||||
"posttest:playwright": "node playwright.coverage.js",
|
||||
"root:tt": "node workspace.root.js root:some"
|
||||
"posttest:playwright": "playwright-merge-coverage && full-coverage"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user