mirror of https://github.com/nocodb/nocodb
37 lines
1.5 KiB
37 lines
1.5 KiB
// eslint-disable-next-line no-undef |
|
const util = require('util'); |
|
// eslint-disable-next-line no-undef |
|
const exec = util.promisify(require('child_process').exec); |
|
// Get items from `git diff develop' |
|
|
|
void (async () => { |
|
const { stdout: allFileNames } = await exec('git diff --name-only origin/develop'); |
|
// return if no changed file ends with .js |
|
const testFilesInChangedFiles = allFileNames |
|
.split('\n') |
|
.filter(fileName => fileName.endsWith('.spec.ts')) |
|
.filter(fileName => fileName.startsWith('+')); // Only get newly added files |
|
if (testFilesInChangedFiles.length === 0) { |
|
console.log('No test file changed, skipping stress test'); |
|
return; |
|
} |
|
|
|
const { stdout } = await exec(`git diff origin/develop -- **/*.spec.ts | grep test\\( | cat`); |
|
// eslint-disable-next-line no-undef |
|
const dbType = process.env.E2E_DB_TYPE; |
|
|
|
// get test names which is in the form of `+ test('test name', () => {' |
|
const testNames = stdout |
|
.match(/\+ {2}test\('(.*)',/g) |
|
// extract test name by removing `+ test('` and `',*` |
|
.map(testName => testName.replace("test('", '').trimEnd().slice(0, -2).slice(1, testName.length).trim()); |
|
console.log({ dbType, testNames }); |
|
|
|
// run all the tests by title using regex with exact match |
|
const { stdout: pwStdout } = await exec( |
|
`PLAYWRIGHT_HTML_REPORT=playwright-report-stress E2E_DB_TYPE=${dbType} npx playwright test --repeat-each=2 --workers=2 -g "${testNames.join( |
|
'|' |
|
)}"` |
|
); |
|
console.log('pwStdout:', pwStdout); |
|
})();
|
|
|