@brightspace-ui/testing 0.29.2 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/d2l-test-runner.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import commandLineArgs from 'command-line-args';
|
|
3
|
+
import { execSync } from 'node:child_process';
|
|
3
4
|
import process from 'node:process';
|
|
4
5
|
import { runner } from '../src/server/cli/test-runner.js';
|
|
5
6
|
|
|
@@ -21,8 +22,20 @@ if (cli.subcommand === 'vdiff') {
|
|
|
21
22
|
} else if (vdiff.subcommand === 'migrate') {
|
|
22
23
|
const { migrate } = await import('../src/server/cli/vdiff/migrate.js');
|
|
23
24
|
await migrate.start(vdiff._unknown);
|
|
25
|
+
} else if (vdiff.subcommand === 'migrate-local') {
|
|
26
|
+
|
|
27
|
+
const { pattern = './**' } = commandLineArgs({ name: 'pattern', type: String, defaultOption: true }, { partial: true, argv: vdiff._unknown || [] });
|
|
28
|
+
|
|
29
|
+
stdout.write('\nInstalling @brightspace-ui/visual-diff\n');
|
|
30
|
+
execSync('npm install @brightspace-ui/visual-diff@14 --no-save');
|
|
31
|
+
stdout.write(`\nRunning existing tests for pattern '${pattern}/*.visual-diff.js'\n`);
|
|
32
|
+
execSync(`npx mocha '${pattern}/*.visual-diff.js' -t 10000 --golden`);
|
|
33
|
+
stdout.write('\nTest run complete.\n');
|
|
34
|
+
|
|
35
|
+
const { migrate } = await import('../src/server/cli/vdiff/migrate.js');
|
|
36
|
+
await migrate.start(vdiff._unknown, true);
|
|
24
37
|
} else {
|
|
25
|
-
stdout.write(`\nfatal: unknown
|
|
38
|
+
stdout.write(`\nfatal: unknown subcommand: ${vdiff.subcommand}\n`);
|
|
26
39
|
}
|
|
27
40
|
} else {
|
|
28
41
|
runTests();
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@brightspace-ui/testing",
|
|
3
3
|
"description": "Utilities for testing front-end components and applications",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.30.0",
|
|
6
6
|
"repository": "https://github.com/BrightspaceUI/testing.git",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"lint": "eslint . --ext .js",
|
package/src/browser/vdiff.js
CHANGED
|
@@ -19,6 +19,13 @@ mocha.setup({
|
|
|
19
19
|
});
|
|
20
20
|
/* eslint-enable */
|
|
21
21
|
|
|
22
|
+
function findTarget(elem) {
|
|
23
|
+
if (!elem.shadowRoot) return elem;
|
|
24
|
+
const nestedTarget = elem.shadowRoot.querySelector('.vdiff-target');
|
|
25
|
+
if (!nestedTarget) return elem;
|
|
26
|
+
return findTarget(nestedTarget);
|
|
27
|
+
}
|
|
28
|
+
|
|
22
29
|
async function ScreenshotAndCompare(opts) {
|
|
23
30
|
|
|
24
31
|
if (window.d2lTest) {
|
|
@@ -27,7 +34,11 @@ async function ScreenshotAndCompare(opts) {
|
|
|
27
34
|
}
|
|
28
35
|
|
|
29
36
|
const name = this.test.fullTitle();
|
|
30
|
-
|
|
37
|
+
let rect = null;
|
|
38
|
+
if (this.elem !== document) {
|
|
39
|
+
const target = findTarget(this.elem);
|
|
40
|
+
rect = target.getBoundingClientRect();
|
|
41
|
+
}
|
|
31
42
|
const slowDuration = this.test.slow();
|
|
32
43
|
let result = await executeServerCommand('brightspace-visual-diff-compare', { name, rect, slowDuration, opts });
|
|
33
44
|
if (result.resizeRequired) {
|
|
@@ -163,6 +163,10 @@ async function getTestRunnerOptions(argv = []) {
|
|
|
163
163
|
{
|
|
164
164
|
example: 'vdiff migrate [directory]',
|
|
165
165
|
desc: 'Migrate from @brightspace-ui/visual-diff. Restrict which goldens are migrated with a directory glob.'
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
example: 'vdiff migrate-local [directory]',
|
|
169
|
+
desc: 'Generate goldens with @brightspace-ui/visual-diff for local comparison while migrating tests. Restrict which goldens are generated with a directory glob.'
|
|
166
170
|
}]
|
|
167
171
|
}
|
|
168
172
|
]);
|
|
@@ -6,9 +6,11 @@ import { glob } from 'glob';
|
|
|
6
6
|
import { PATHS } from '../../visual-diff-plugin.js';
|
|
7
7
|
import { stdout } from 'node:process';
|
|
8
8
|
|
|
9
|
-
async function start(argv = []) {
|
|
9
|
+
async function start(argv = [], local = false) {
|
|
10
10
|
const { pattern = './**' } = commandLineArgs({ name: 'pattern', type: String, defaultOption: true }, { partial: true, argv });
|
|
11
|
-
const oldSuffix = 'screenshots/ci/golden';
|
|
11
|
+
const oldSuffix = local ? 'screenshots/golden' : 'screenshots/ci/golden';
|
|
12
|
+
|
|
13
|
+
stdout.write(`\nMigrating goldens for pattern '${pattern}/${oldSuffix}'\n`);
|
|
12
14
|
const dirs = await glob(`${pattern}/${oldSuffix}`, { ignore: 'node_modules/**', posix: true });
|
|
13
15
|
let fileCount = 0;
|
|
14
16
|
|
|
@@ -30,12 +32,17 @@ async function start(argv = []) {
|
|
|
30
32
|
.replace(/^d2l-/, '')
|
|
31
33
|
.replace(new RegExp(`^${dirName}-`), '');
|
|
32
34
|
|
|
33
|
-
const newDir =
|
|
35
|
+
const newDir = local ?
|
|
36
|
+
`${PATHS.VDIFF_ROOT}/${dir.replace(`${oldSuffix}/${dirName}`, `${dirName}/${PATHS.GOLDEN}/chromium`)}` :
|
|
37
|
+
dir.replace(`${oldSuffix}/${dirName}`, `${PATHS.GOLDEN}/${dirName}/chromium`);
|
|
34
38
|
|
|
35
39
|
await mkdir(newDir, { recursive: true });
|
|
36
40
|
return rename(file, join(newDir, newName));
|
|
37
41
|
}));
|
|
38
|
-
|
|
42
|
+
|
|
43
|
+
if (!local) {
|
|
44
|
+
return rm(normalize(join(dir, '..', '..')), { recursive: true });
|
|
45
|
+
}
|
|
39
46
|
}));
|
|
40
47
|
|
|
41
48
|
stdout.write(`\nMigrated ${fileCount} ${fileCount === 1 ? 'golden' : 'goldens'} found in ${dirs.length} test ${dirs.length === 1 ? 'directory' : 'directories'}\n`);
|
package/src/server/wtr-config.js
CHANGED
|
@@ -196,6 +196,7 @@ export class WTRConfig {
|
|
|
196
196
|
config.groups.forEach(g => g.browsers = this.getBrowsers(g.browsers));
|
|
197
197
|
|
|
198
198
|
if (open || watch) {
|
|
199
|
+
config.testsFinishTimeout = 15 * 60 * 1000;
|
|
199
200
|
config.plugins ??= [];
|
|
200
201
|
const currentPattern = files || config.groups.find(g => g.name === group)?.files;
|
|
201
202
|
|