@ohos-ports/web-test-runner 1.0.0-beta.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/README.md +65 -0
- package/dist/TestRunnerStartError.d.ts +3 -0
- package/dist/TestRunnerStartError.d.ts.map +1 -0
- package/dist/TestRunnerStartError.js +7 -0
- package/dist/TestRunnerStartError.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +6 -0
- package/dist/bin.js.map +1 -0
- package/dist/config/TestRunnerConfig.d.ts +10 -0
- package/dist/config/TestRunnerConfig.d.ts.map +1 -0
- package/dist/config/TestRunnerConfig.js +3 -0
- package/dist/config/TestRunnerConfig.js.map +1 -0
- package/dist/config/collectGroupConfigs.d.ts +3 -0
- package/dist/config/collectGroupConfigs.d.ts.map +1 -0
- package/dist/config/collectGroupConfigs.js +43 -0
- package/dist/config/collectGroupConfigs.js.map +1 -0
- package/dist/config/loadLauncher.d.ts +3 -0
- package/dist/config/loadLauncher.d.ts.map +1 -0
- package/dist/config/loadLauncher.js +43 -0
- package/dist/config/loadLauncher.js.map +1 -0
- package/dist/config/mergeConfigs.d.ts +3 -0
- package/dist/config/mergeConfigs.d.ts.map +1 -0
- package/dist/config/mergeConfigs.js +26 -0
- package/dist/config/mergeConfigs.js.map +1 -0
- package/dist/config/parseConfig.d.ts +9 -0
- package/dist/config/parseConfig.d.ts.map +1 -0
- package/dist/config/parseConfig.js +216 -0
- package/dist/config/parseConfig.js.map +1 -0
- package/dist/config/readCliArgs.d.ts +15 -0
- package/dist/config/readCliArgs.d.ts.map +1 -0
- package/dist/config/readCliArgs.js +148 -0
- package/dist/config/readCliArgs.js.map +1 -0
- package/dist/config/readFileConfig.d.ts +18 -0
- package/dist/config/readFileConfig.d.ts.map +1 -0
- package/dist/config/readFileConfig.js +22 -0
- package/dist/config/readFileConfig.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/logger/TestRunnerLogger.d.ts +15 -0
- package/dist/logger/TestRunnerLogger.d.ts.map +1 -0
- package/dist/logger/TestRunnerLogger.js +48 -0
- package/dist/logger/TestRunnerLogger.js.map +1 -0
- package/dist/reporter/defaultReporter.d.ts +7 -0
- package/dist/reporter/defaultReporter.d.ts.map +1 -0
- package/dist/reporter/defaultReporter.js +51 -0
- package/dist/reporter/defaultReporter.js.map +1 -0
- package/dist/reporter/dotReporter.d.ts +4 -0
- package/dist/reporter/dotReporter.d.ts.map +1 -0
- package/dist/reporter/dotReporter.js +53 -0
- package/dist/reporter/dotReporter.js.map +1 -0
- package/dist/reporter/getCodeCoverage.d.ts +3 -0
- package/dist/reporter/getCodeCoverage.d.ts.map +1 -0
- package/dist/reporter/getCodeCoverage.js +36 -0
- package/dist/reporter/getCodeCoverage.js.map +1 -0
- package/dist/reporter/getTestProgress.d.ts +16 -0
- package/dist/reporter/getTestProgress.d.ts.map +1 -0
- package/dist/reporter/getTestProgress.js +105 -0
- package/dist/reporter/getTestProgress.js.map +1 -0
- package/dist/reporter/renderProgressBar.d.ts +2 -0
- package/dist/reporter/renderProgressBar.d.ts.map +1 -0
- package/dist/reporter/renderProgressBar.js +23 -0
- package/dist/reporter/renderProgressBar.js.map +1 -0
- package/dist/reporter/reportBrowserLogs.d.ts +3 -0
- package/dist/reporter/reportBrowserLogs.d.ts.map +1 -0
- package/dist/reporter/reportBrowserLogs.js +61 -0
- package/dist/reporter/reportBrowserLogs.js.map +1 -0
- package/dist/reporter/reportRequest404s.d.ts +3 -0
- package/dist/reporter/reportRequest404s.d.ts.map +1 -0
- package/dist/reporter/reportRequest404s.js +54 -0
- package/dist/reporter/reportRequest404s.js.map +1 -0
- package/dist/reporter/reportTestFileErrors.d.ts +3 -0
- package/dist/reporter/reportTestFileErrors.d.ts.map +1 -0
- package/dist/reporter/reportTestFileErrors.js +52 -0
- package/dist/reporter/reportTestFileErrors.js.map +1 -0
- package/dist/reporter/reportTestFileResults.d.ts +3 -0
- package/dist/reporter/reportTestFileResults.d.ts.map +1 -0
- package/dist/reporter/reportTestFileResults.js +25 -0
- package/dist/reporter/reportTestFileResults.js.map +1 -0
- package/dist/reporter/reportTestsErrors.d.ts +4 -0
- package/dist/reporter/reportTestsErrors.d.ts.map +1 -0
- package/dist/reporter/reportTestsErrors.js +129 -0
- package/dist/reporter/reportTestsErrors.js.map +1 -0
- package/dist/reporter/summaryReporter.d.ts +10 -0
- package/dist/reporter/summaryReporter.d.ts.map +1 -0
- package/dist/reporter/summaryReporter.js +73 -0
- package/dist/reporter/summaryReporter.js.map +1 -0
- package/dist/reporter/utils/getFailedOnBrowsers.d.ts +2 -0
- package/dist/reporter/utils/getFailedOnBrowsers.d.ts.map +1 -0
- package/dist/reporter/utils/getFailedOnBrowsers.js +13 -0
- package/dist/reporter/utils/getFailedOnBrowsers.js.map +1 -0
- package/dist/reporter/utils/getFlattenedTestResults.d.ts +3 -0
- package/dist/reporter/utils/getFlattenedTestResults.d.ts.map +1 -0
- package/dist/reporter/utils/getFlattenedTestResults.js +21 -0
- package/dist/reporter/utils/getFlattenedTestResults.js.map +1 -0
- package/dist/reporter/utils/getPassedFailedSkippedCount.d.ts +7 -0
- package/dist/reporter/utils/getPassedFailedSkippedCount.d.ts.map +1 -0
- package/dist/reporter/utils/getPassedFailedSkippedCount.js +30 -0
- package/dist/reporter/utils/getPassedFailedSkippedCount.js.map +1 -0
- package/dist/reporter/utils/toBrowserPath.d.ts +2 -0
- package/dist/reporter/utils/toBrowserPath.d.ts.map +1 -0
- package/dist/reporter/utils/toBrowserPath.js +11 -0
- package/dist/reporter/utils/toBrowserPath.js.map +1 -0
- package/dist/reporter/utils/toFilePath.d.ts +6 -0
- package/dist/reporter/utils/toFilePath.d.ts.map +1 -0
- package/dist/reporter/utils/toFilePath.js +15 -0
- package/dist/reporter/utils/toFilePath.js.map +1 -0
- package/dist/startTestRunner.d.ts +33 -0
- package/dist/startTestRunner.d.ts.map +1 -0
- package/dist/startTestRunner.js +61 -0
- package/dist/startTestRunner.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.mjs +38 -0
- package/package.json +107 -0
- package/scripts/ohos-postinstall-sign.js +117 -0
- package/src/TestRunnerStartError.ts +1 -0
- package/src/bin.ts +4 -0
- package/src/config/TestRunnerConfig.ts +14 -0
- package/src/config/collectGroupConfigs.ts +50 -0
- package/src/config/loadLauncher.ts +48 -0
- package/src/config/mergeConfigs.ts +26 -0
- package/src/config/parseConfig.ts +286 -0
- package/src/config/readCliArgs.ts +187 -0
- package/src/config/readFileConfig.ts +35 -0
- package/src/index.ts +11 -0
- package/src/logger/TestRunnerLogger.ts +54 -0
- package/src/reporter/defaultReporter.ts +78 -0
- package/src/reporter/dotReporter.ts +65 -0
- package/src/reporter/getCodeCoverage.ts +54 -0
- package/src/reporter/getTestProgress.ts +181 -0
- package/src/reporter/renderProgressBar.ts +27 -0
- package/src/reporter/reportBrowserLogs.ts +64 -0
- package/src/reporter/reportRequest404s.ts +55 -0
- package/src/reporter/reportTestFileErrors.ts +70 -0
- package/src/reporter/reportTestFileResults.ts +33 -0
- package/src/reporter/reportTestsErrors.ts +110 -0
- package/src/reporter/summaryReporter.ts +123 -0
- package/src/reporter/utils/getFailedOnBrowsers.ts +10 -0
- package/src/reporter/utils/getFlattenedTestResults.ts +24 -0
- package/src/reporter/utils/getPassedFailedSkippedCount.ts +31 -0
- package/src/reporter/utils/toBrowserPath.ts +5 -0
- package/src/reporter/utils/toFilePath.ts +9 -0
- package/src/startTestRunner.ts +101 -0
- package/web-test-runner.config.mjs +8 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.readCliArgs = readCliArgs;
|
|
7
|
+
const camelcase_1 = __importDefault(require("camelcase"));
|
|
8
|
+
const command_line_args_1 = __importDefault(require("command-line-args"));
|
|
9
|
+
const command_line_usage_1 = __importDefault(require("command-line-usage"));
|
|
10
|
+
const options = [
|
|
11
|
+
{
|
|
12
|
+
name: 'files',
|
|
13
|
+
type: String,
|
|
14
|
+
multiple: true,
|
|
15
|
+
defaultOption: true,
|
|
16
|
+
description: 'Test files to run',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'root-dir',
|
|
20
|
+
type: String,
|
|
21
|
+
description: 'Root directory to serve files from.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'watch',
|
|
25
|
+
type: Boolean,
|
|
26
|
+
description: 'Reload tests on file changes',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'coverage',
|
|
30
|
+
type: Boolean,
|
|
31
|
+
description: 'Check for code coverage. Slows down testing.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'concurrent-browsers',
|
|
35
|
+
type: Number,
|
|
36
|
+
description: 'Amount of browsers to run concurrently. Defaults to 2.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'concurrency',
|
|
40
|
+
type: Number,
|
|
41
|
+
description: 'Amount of test files to run concurrently. Defaults to total CPU cores divided by 2.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'config',
|
|
45
|
+
type: String,
|
|
46
|
+
description: 'Location to read config file from.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'static-logging',
|
|
50
|
+
type: Boolean,
|
|
51
|
+
description: 'Disables rendering a progress bar dynamically to the terminal.',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'manual',
|
|
55
|
+
type: Boolean,
|
|
56
|
+
description: 'Starts test runner in manual testing mode. Ignores browsers option and prints manual testing URL.',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'open',
|
|
60
|
+
type: Boolean,
|
|
61
|
+
description: 'Opens browser for manual testing. Requires the manual option to be set.',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'port',
|
|
65
|
+
type: Number,
|
|
66
|
+
description: 'Port to bind the server on.',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'groups',
|
|
70
|
+
type: String,
|
|
71
|
+
description: 'Pattern of group config files.',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'group',
|
|
75
|
+
type: String,
|
|
76
|
+
description: 'Name of the group to run tests for. When this is set, the other groups are ignored.',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: 'preserve-symlinks',
|
|
80
|
+
type: Boolean,
|
|
81
|
+
description: "Don't follow symlinks when resolving imports",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: 'puppeteer',
|
|
85
|
+
type: Boolean,
|
|
86
|
+
description: 'Run tests using puppeteer',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'playwright',
|
|
90
|
+
type: Boolean,
|
|
91
|
+
description: 'Run tests using playwright',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'browsers',
|
|
95
|
+
type: String,
|
|
96
|
+
multiple: true,
|
|
97
|
+
description: 'Browsers to run when choosing puppeteer or playwright',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: 'node-resolve',
|
|
101
|
+
type: Boolean,
|
|
102
|
+
description: 'Resolve bare module imports using node resolution',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'update-snapshots',
|
|
106
|
+
type: Boolean,
|
|
107
|
+
description: 'Whether to accept changes in shapshots, and save them on disk',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'esbuild-target',
|
|
111
|
+
type: String,
|
|
112
|
+
multiple: true,
|
|
113
|
+
description: 'JS language target to compile down to using esbuild. Recommended value is "auto", which compiles based on user agent. Check the docs for more options.',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: 'debug',
|
|
117
|
+
type: Boolean,
|
|
118
|
+
description: 'Log debug messages',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
name: 'help',
|
|
122
|
+
type: Boolean,
|
|
123
|
+
description: 'Print help commands',
|
|
124
|
+
},
|
|
125
|
+
];
|
|
126
|
+
function readCliArgs({ argv = process.argv } = {}) {
|
|
127
|
+
const cliArgs = (0, command_line_args_1.default)(options, { argv, partial: true });
|
|
128
|
+
if ('help' in cliArgs) {
|
|
129
|
+
console.log((0, command_line_usage_1.default)([
|
|
130
|
+
{
|
|
131
|
+
header: 'Web Test Runner',
|
|
132
|
+
content: 'Test runner for web applications.',
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
header: 'Usage',
|
|
136
|
+
content: 'web-test-runner [options...]' + '\nwtr [options...]',
|
|
137
|
+
},
|
|
138
|
+
{ header: 'Options', optionList: options },
|
|
139
|
+
]));
|
|
140
|
+
process.exit();
|
|
141
|
+
}
|
|
142
|
+
const cliArgsConfig = {};
|
|
143
|
+
for (const [key, value] of Object.entries(cliArgs)) {
|
|
144
|
+
cliArgsConfig[(0, camelcase_1.default)(key)] = value;
|
|
145
|
+
}
|
|
146
|
+
return cliArgsConfig;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=readCliArgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readCliArgs.js","sourceRoot":"","sources":["../../src/config/readCliArgs.ts"],"names":[],"mappings":";;;;;AA+JA,kCA2BC;AA1LD,0DAAkC;AAClC,0EAAgD;AAChD,4EAAwE;AAgCxE,MAAM,OAAO,GAAuB;IAClC;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,mBAAmB;KACjC;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,qCAAqC;KACnD;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,8BAA8B;KAC5C;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,8CAA8C;KAC5D;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,wDAAwD;KACtE;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,qFAAqF;KACxF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,oCAAoC;KAClD;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,gEAAgE;KAC9E;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,WAAW,EACT,mGAAmG;KACtG;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,yEAAyE;KACvF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,6BAA6B;KAC3C;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,gCAAgC;KAC9C;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,qFAAqF;KACxF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,8CAA8C;KAC5D;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,2BAA2B;KACzC;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,4BAA4B;KAC1C;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,uDAAuD;KACrE;IACD;QACE,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,mDAAmD;KACjE;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,+DAA+D;KAC7E;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,WAAW,EACT,wJAAwJ;KAC3J;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,oBAAoB;KAClC;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,qBAAqB;KACnC;CACF,CAAC;AAMF,SAAgB,WAAW,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,KAAwB,EAAE;IACzE,MAAM,OAAO,GAAG,IAAA,2BAAe,EAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAElE,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CACT,IAAA,4BAAgB,EAAC;YACf;gBACE,MAAM,EAAE,iBAAiB;gBACzB,OAAO,EAAE,mCAAmC;aAC7C;YACD;gBACE,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,8BAA8B,GAAG,oBAAoB;aAC/D;YACD,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE;SAC3C,CAAC,CACH,CAAC;QACF,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAED,MAAM,aAAa,GAAsB,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,aAAa,CAAC,IAAA,mBAAS,EAAC,GAAG,CAA4B,CAAC,GAAG,KAAK,CAAC;IACnE,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface ReadFileConfigParams {
|
|
2
|
+
/**
|
|
3
|
+
* The config name to use. Defaults to web-test-runner.config.{mjs,cjs,js}
|
|
4
|
+
*/
|
|
5
|
+
configName?: string;
|
|
6
|
+
/**
|
|
7
|
+
* Path to the config file. If this is not set, the config is looked up in the
|
|
8
|
+
* current working directory using the config name.
|
|
9
|
+
*/
|
|
10
|
+
configPath?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Reads the config from disk, defaults to process.cwd() + web-test-runner.config.{mjs,js,cjs} or
|
|
14
|
+
* a custom config path.
|
|
15
|
+
* @param customConfig the custom location to read the config from
|
|
16
|
+
*/
|
|
17
|
+
export declare function readFileConfig({ configName, configPath, }?: ReadFileConfigParams): Promise<any>;
|
|
18
|
+
//# sourceMappingURL=readFileConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readFileConfig.d.ts","sourceRoot":"","sources":["../../src/config/readFileConfig.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AAEH,wBAAsB,cAAc,CAAC,EACnC,UAAqC,EACrC,UAAU,GACX,GAAE,oBAAyB,gBAS3B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readFileConfig = readFileConfig;
|
|
4
|
+
const config_loader_1 = require("@web/config-loader");
|
|
5
|
+
const TestRunnerStartError_js_1 = require("../TestRunnerStartError.js");
|
|
6
|
+
/**
|
|
7
|
+
* Reads the config from disk, defaults to process.cwd() + web-test-runner.config.{mjs,js,cjs} or
|
|
8
|
+
* a custom config path.
|
|
9
|
+
* @param customConfig the custom location to read the config from
|
|
10
|
+
*/
|
|
11
|
+
async function readFileConfig({ configName = 'web-test-runner.config', configPath, } = {}) {
|
|
12
|
+
try {
|
|
13
|
+
return await (0, config_loader_1.readConfig)(configName, typeof configPath === 'string' ? configPath : undefined);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
if (error instanceof config_loader_1.ConfigLoaderError) {
|
|
17
|
+
throw new TestRunnerStartError_js_1.TestRunnerStartError(error.message);
|
|
18
|
+
}
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=readFileConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readFileConfig.js","sourceRoot":"","sources":["../../src/config/readFileConfig.ts"],"names":[],"mappings":";;AAsBA,wCAYC;AAlCD,sDAAmE;AAEnE,wEAAkE;AAclE;;;;GAIG;AAEI,KAAK,UAAU,cAAc,CAAC,EACnC,UAAU,GAAG,wBAAwB,EACrC,UAAU,MACc,EAAE;IAC1B,IAAI,CAAC;QACH,OAAO,MAAM,IAAA,0BAAU,EAAC,UAAU,EAAE,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,iCAAiB,EAAE,CAAC;YACvC,MAAM,IAAI,8CAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TestRunnerConfig as FullTestRunnerConfig } from './config/TestRunnerConfig.js';
|
|
2
|
+
export { chromeLauncher } from '@web/test-runner-chrome';
|
|
3
|
+
export * from '@web/test-runner-core';
|
|
4
|
+
export { defaultReporter } from './reporter/defaultReporter.js';
|
|
5
|
+
export { dotReporter } from './reporter/dotReporter.js';
|
|
6
|
+
export { formatError } from './reporter/reportTestsErrors.js';
|
|
7
|
+
export { summaryReporter } from './reporter/summaryReporter.js';
|
|
8
|
+
export { startTestRunner } from './startTestRunner.js';
|
|
9
|
+
export type TestRunnerConfig = Partial<FullTestRunnerConfig>;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAE7F,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.startTestRunner = exports.summaryReporter = exports.formatError = exports.dotReporter = exports.defaultReporter = exports.chromeLauncher = void 0;
|
|
18
|
+
var test_runner_chrome_1 = require("@web/test-runner-chrome");
|
|
19
|
+
Object.defineProperty(exports, "chromeLauncher", { enumerable: true, get: function () { return test_runner_chrome_1.chromeLauncher; } });
|
|
20
|
+
__exportStar(require("@web/test-runner-core"), exports);
|
|
21
|
+
var defaultReporter_js_1 = require("./reporter/defaultReporter.js");
|
|
22
|
+
Object.defineProperty(exports, "defaultReporter", { enumerable: true, get: function () { return defaultReporter_js_1.defaultReporter; } });
|
|
23
|
+
var dotReporter_js_1 = require("./reporter/dotReporter.js");
|
|
24
|
+
Object.defineProperty(exports, "dotReporter", { enumerable: true, get: function () { return dotReporter_js_1.dotReporter; } });
|
|
25
|
+
var reportTestsErrors_js_1 = require("./reporter/reportTestsErrors.js");
|
|
26
|
+
Object.defineProperty(exports, "formatError", { enumerable: true, get: function () { return reportTestsErrors_js_1.formatError; } });
|
|
27
|
+
var summaryReporter_js_1 = require("./reporter/summaryReporter.js");
|
|
28
|
+
Object.defineProperty(exports, "summaryReporter", { enumerable: true, get: function () { return summaryReporter_js_1.summaryReporter; } });
|
|
29
|
+
var startTestRunner_js_1 = require("./startTestRunner.js");
|
|
30
|
+
Object.defineProperty(exports, "startTestRunner", { enumerable: true, get: function () { return startTestRunner_js_1.startTestRunner; } });
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,8DAAyD;AAAhD,oHAAA,cAAc,OAAA;AACvB,wDAAsC;AACtC,oEAAgE;AAAvD,qHAAA,eAAe,OAAA;AACxB,4DAAwD;AAA/C,6GAAA,WAAW,OAAA;AACpB,wEAA8D;AAArD,mHAAA,WAAW,OAAA;AACpB,oEAAgE;AAAvD,qHAAA,eAAe,OAAA;AACxB,2DAAuD;AAA9C,qHAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ErrorWithLocation, type Logger } from '@web/test-runner-core';
|
|
2
|
+
export declare class TestRunnerLogger implements Logger {
|
|
3
|
+
private debugLogging;
|
|
4
|
+
loggedSyntaxErrors: Map<string, ErrorWithLocation[]>;
|
|
5
|
+
constructor(debugLogging?: boolean);
|
|
6
|
+
log(...messages: unknown[]): void;
|
|
7
|
+
debug(...messages: unknown[]): void;
|
|
8
|
+
error(...messages: unknown[]): void;
|
|
9
|
+
warn(...messages: unknown[]): void;
|
|
10
|
+
group(): void;
|
|
11
|
+
groupEnd(): void;
|
|
12
|
+
logSyntaxError(error: ErrorWithLocation): void;
|
|
13
|
+
clearLoggedSyntaxErrors(): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=TestRunnerLogger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestRunnerLogger.d.ts","sourceRoot":"","sources":["../../src/logger/TestRunnerLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE5E,qBAAa,gBAAiB,YAAW,MAAM;IAGjC,OAAO,CAAC,YAAY;IAFhC,kBAAkB,mCAA0C;gBAExC,YAAY,GAAE,OAAe;IAEjD,GAAG,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI1B,KAAK,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAM5B,KAAK,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI5B,IAAI,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE;IAI3B,KAAK;IAIL,QAAQ;IAIR,cAAc,CAAC,KAAK,EAAE,iBAAiB;IAiBvC,uBAAuB;CAGxB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestRunnerLogger = void 0;
|
|
4
|
+
class TestRunnerLogger {
|
|
5
|
+
debugLogging;
|
|
6
|
+
loggedSyntaxErrors = new Map();
|
|
7
|
+
constructor(debugLogging = false) {
|
|
8
|
+
this.debugLogging = debugLogging;
|
|
9
|
+
}
|
|
10
|
+
log(...messages) {
|
|
11
|
+
console.log(...messages);
|
|
12
|
+
}
|
|
13
|
+
debug(...messages) {
|
|
14
|
+
if (this.debugLogging) {
|
|
15
|
+
console.debug(...messages);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
error(...messages) {
|
|
19
|
+
console.error(...messages);
|
|
20
|
+
}
|
|
21
|
+
warn(...messages) {
|
|
22
|
+
console.warn(...messages);
|
|
23
|
+
}
|
|
24
|
+
group() {
|
|
25
|
+
console.group();
|
|
26
|
+
}
|
|
27
|
+
groupEnd() {
|
|
28
|
+
console.groupEnd();
|
|
29
|
+
}
|
|
30
|
+
logSyntaxError(error) {
|
|
31
|
+
const { message, code, filePath, column, line } = error;
|
|
32
|
+
let errors = this.loggedSyntaxErrors.get(filePath);
|
|
33
|
+
if (!errors) {
|
|
34
|
+
errors = [];
|
|
35
|
+
this.loggedSyntaxErrors.set(filePath, errors);
|
|
36
|
+
}
|
|
37
|
+
else if (errors.find(e => e.code === code && e.message === message && e.column === column && e.line === line)) {
|
|
38
|
+
// dedupe syntax errors we already logged
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
errors.push(error);
|
|
42
|
+
}
|
|
43
|
+
clearLoggedSyntaxErrors() {
|
|
44
|
+
this.loggedSyntaxErrors = new Map();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.TestRunnerLogger = TestRunnerLogger;
|
|
48
|
+
//# sourceMappingURL=TestRunnerLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestRunnerLogger.js","sourceRoot":"","sources":["../../src/logger/TestRunnerLogger.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IAGP;IAFpB,kBAAkB,GAAG,IAAI,GAAG,EAA+B,CAAC;IAE5D,YAAoB,eAAwB,KAAK;QAA7B,iBAAY,GAAZ,YAAY,CAAiB;IAAG,CAAC;IAErD,GAAG,CAAC,GAAG,QAAmB;QACxB,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,GAAG,QAAmB;QAC1B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,QAAmB;QAC1B,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,GAAG,QAAmB;QACzB,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK;QACH,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,QAAQ,EAAE,CAAC;IACrB,CAAC;IAED,cAAc,CAAC,KAAwB;QACrC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACxD,IAAI,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,EAAE,CAAC;YACZ,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;aAAM,IACL,MAAM,CAAC,IAAI,CACT,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CACxF,EACD,CAAC;YACD,yCAAyC;YACzC,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,uBAAuB;QACrB,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;IACtC,CAAC;CACF;AAnDD,4CAmDC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Reporter } from '@web/test-runner-core';
|
|
2
|
+
export interface DefaultReporterArgs {
|
|
3
|
+
reportTestResults?: boolean;
|
|
4
|
+
reportTestProgress?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function defaultReporter({ reportTestResults, reportTestProgress, }?: DefaultReporterArgs): Reporter;
|
|
7
|
+
//# sourceMappingURL=defaultReporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultReporter.d.ts","sourceRoot":"","sources":["../../src/reporter/defaultReporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EAEd,MAAM,uBAAuB,CAAC;AAK/B,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AASD,wBAAgB,eAAe,CAAC,EAC9B,iBAAwB,EACxB,kBAAyB,GAC1B,GAAE,mBAAwB,GAAG,QAAQ,CAoDrC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultReporter = defaultReporter;
|
|
4
|
+
const getTestProgress_js_1 = require("./getTestProgress.js");
|
|
5
|
+
const reportTestFileResults_js_1 = require("./reportTestFileResults.js");
|
|
6
|
+
function isBufferedLogger(logger) {
|
|
7
|
+
return (typeof logger.logBufferedMessages === 'function' &&
|
|
8
|
+
Array.isArray(logger.buffer));
|
|
9
|
+
}
|
|
10
|
+
function defaultReporter({ reportTestResults = true, reportTestProgress = true, } = {}) {
|
|
11
|
+
let args;
|
|
12
|
+
let favoriteBrowser;
|
|
13
|
+
return {
|
|
14
|
+
start(_args) {
|
|
15
|
+
args = _args;
|
|
16
|
+
favoriteBrowser =
|
|
17
|
+
args.browserNames.find(name => {
|
|
18
|
+
const n = name.toLowerCase();
|
|
19
|
+
return n.includes('chrome') || n.includes('chromium') || n.includes('firefox');
|
|
20
|
+
}) ?? args.browserNames[0];
|
|
21
|
+
},
|
|
22
|
+
reportTestFileResults({ logger, sessionsForTestFile, testFile }) {
|
|
23
|
+
if (!reportTestResults) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
if (!isBufferedLogger(logger)) {
|
|
27
|
+
throw new Error('Expected a BufferedLogger instance.');
|
|
28
|
+
}
|
|
29
|
+
return (0, reportTestFileResults_js_1.reportTestFileResults)(logger, testFile, args.browserNames, favoriteBrowser, sessionsForTestFile);
|
|
30
|
+
},
|
|
31
|
+
getTestProgress({ testRun, focusedTestFile, testCoverage }) {
|
|
32
|
+
if (!reportTestProgress) {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
return (0, getTestProgress_js_1.getTestProgressReport)(args.config, {
|
|
36
|
+
browsers: args.browsers,
|
|
37
|
+
browserNames: args.browserNames,
|
|
38
|
+
testRun,
|
|
39
|
+
testFiles: args.testFiles,
|
|
40
|
+
sessions: args.sessions,
|
|
41
|
+
startTime: args.startTime,
|
|
42
|
+
focusedTestFile,
|
|
43
|
+
watch: args.config.watch,
|
|
44
|
+
coverage: !!args.config.coverage,
|
|
45
|
+
coverageConfig: args.config.coverageConfig,
|
|
46
|
+
testCoverage,
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=defaultReporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultReporter.js","sourceRoot":"","sources":["../../src/reporter/defaultReporter.ts"],"names":[],"mappings":";;AAsBA,0CAuDC;AAtED,6DAA6D;AAC7D,yEAAmE;AAOnE,SAAS,gBAAgB,CAAC,MAAc;IACtC,OAAO,CACL,OAAQ,MAAc,CAAC,mBAAmB,KAAK,UAAU;QACzD,KAAK,CAAC,OAAO,CAAE,MAAc,CAAC,MAAM,CAAC,CACtC,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAAC,EAC9B,iBAAiB,GAAG,IAAI,EACxB,kBAAkB,GAAG,IAAI,MACF,EAAE;IACzB,IAAI,IAAkB,CAAC;IACvB,IAAI,eAAuB,CAAC;IAE5B,OAAO;QACL,KAAK,CAAC,KAAK;YACT,IAAI,GAAG,KAAK,CAAC;YACb,eAAe;gBACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBAC7B,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACjF,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,qBAAqB,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE;YAC7D,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YAED,OAAO,IAAA,gDAAqB,EAC1B,MAAM,EACN,QAAQ,EACR,IAAI,CAAC,YAAY,EACjB,eAAe,EACf,mBAAmB,CACpB,CAAC;QACJ,CAAC;QAED,eAAe,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE;YACxD,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO,IAAA,0CAAqB,EAAC,IAAI,CAAC,MAAM,EAAE;gBACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,OAAO;gBACP,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,eAAe;gBACf,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBACxB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAChC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;gBAC1C,YAAY;aACb,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dotReporter.d.ts","sourceRoot":"","sources":["../../src/reporter/dotReporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAiC,MAAM,uBAAuB,CAAC;AAcrF,gFAAgF;AAChF,wBAAgB,WAAW,IAAI,QAAQ,CAiDtC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dotReporter = dotReporter;
|
|
4
|
+
const reportTestFileErrors_js_1 = require("./reportTestFileErrors.js");
|
|
5
|
+
const reportTestsErrors_js_1 = require("./reportTestsErrors.js");
|
|
6
|
+
const TestRunnerLogger_js_1 = require("../logger/TestRunnerLogger.js");
|
|
7
|
+
const color = ([x, y]) => (z) => `\x1b[${x}m${z}\x1b[${y}m${reset}`;
|
|
8
|
+
const reset = `\x1b[0m\x1b[0m`;
|
|
9
|
+
const red = color([31, 89]);
|
|
10
|
+
/** Test reporter that summarizes all test for a given run using dot notation */
|
|
11
|
+
function dotReporter() {
|
|
12
|
+
let args;
|
|
13
|
+
let favoriteBrowser;
|
|
14
|
+
const logger = new TestRunnerLogger_js_1.TestRunnerLogger();
|
|
15
|
+
function log(passed) {
|
|
16
|
+
logger.log(passed ? '.' : red('x'));
|
|
17
|
+
}
|
|
18
|
+
function logResults(results) {
|
|
19
|
+
for (const result of results?.tests ?? []) {
|
|
20
|
+
log(result.passed);
|
|
21
|
+
}
|
|
22
|
+
for (const suite of results?.suites ?? []) {
|
|
23
|
+
logSuite(suite);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function logSuite(suite) {
|
|
27
|
+
logResults(suite);
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
start(_args) {
|
|
31
|
+
args = _args;
|
|
32
|
+
favoriteBrowser =
|
|
33
|
+
args.browserNames.find(name => {
|
|
34
|
+
const n = name.toLowerCase();
|
|
35
|
+
return n.includes('chrome') || n.includes('chromium') || n.includes('firefox');
|
|
36
|
+
}) ?? args.browserNames[0];
|
|
37
|
+
},
|
|
38
|
+
reportTestFileResults({ sessionsForTestFile: sessions }) {
|
|
39
|
+
for (const session of sessions) {
|
|
40
|
+
logResults(session.testResults);
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
onTestRunFinished({ sessions }) {
|
|
44
|
+
const failedSessions = sessions.filter(s => !s.passed);
|
|
45
|
+
if (failedSessions.length > 0) {
|
|
46
|
+
logger.log('\n\nErrors Reported in Tests:\n\n');
|
|
47
|
+
(0, reportTestsErrors_js_1.reportTestsErrors)(logger, args.browserNames, favoriteBrowser, failedSessions);
|
|
48
|
+
(0, reportTestFileErrors_js_1.reportTestFileErrors)(logger, args.browserNames, favoriteBrowser, failedSessions, true);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=dotReporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dotReporter.js","sourceRoot":"","sources":["../../src/reporter/dotReporter.ts"],"names":[],"mappings":";;AAeA,kCAiDC;AA9DD,uEAAiE;AACjE,iEAA2D;AAE3D,uEAAiE;AAEjE,MAAM,KAAK,GACT,CAAC,CAAC,CAAC,EAAE,CAAC,CAAmB,EAAE,EAAE,CAC7B,CAAC,CAAS,EAAE,EAAE,CACZ,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC;AACvC,MAAM,KAAK,GAAG,gBAAgB,CAAC;AAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAE5B,gFAAgF;AAChF,SAAgB,WAAW;IACzB,IAAI,IAAkB,CAAC;IACvB,IAAI,eAAuB,CAAC;IAE5B,MAAM,MAAM,GAAG,IAAI,sCAAgB,EAAE,CAAC;IAEtC,SAAS,GAAG,CAAC,MAAe;QAC1B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,SAAS,UAAU,CAAC,OAAyB;QAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;YAC1C,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;YAC1C,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,SAAS,QAAQ,CAAC,KAAsB;QACtC,UAAU,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO;QACL,KAAK,CAAC,KAAK;YACT,IAAI,GAAG,KAAK,CAAC;YACb,eAAe;gBACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBAC7B,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACjF,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,qBAAqB,CAAC,EAAE,mBAAmB,EAAE,QAAQ,EAAE;YACrD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,iBAAiB,CAAC,EAAE,QAAQ,EAAE;YAC5B,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;gBAChD,IAAA,wCAAiB,EAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;gBAC9E,IAAA,8CAAoB,EAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCodeCoverage.d.ts","sourceRoot":"","sources":["../../src/reporter/getCodeCoverage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAW/B,wBAAgB,eAAe,CAC7B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,OAAO,EACd,cAAc,EAAE,cAAc,YAmC/B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getCodeCoverage = getCodeCoverage;
|
|
7
|
+
const nanocolors_1 = require("nanocolors");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const coverageTypes = [
|
|
10
|
+
'lines',
|
|
11
|
+
'statements',
|
|
12
|
+
'branches',
|
|
13
|
+
'functions',
|
|
14
|
+
];
|
|
15
|
+
function getCodeCoverage(testCoverage, watch, coverageConfig) {
|
|
16
|
+
const entries = [];
|
|
17
|
+
const coverageSum = coverageTypes.reduce((all, type) => all + testCoverage.summary[type].pct, 0);
|
|
18
|
+
const avgCoverage = Math.round((coverageSum * 100) / 4) / 100;
|
|
19
|
+
if (!Number.isNaN(avgCoverage)) {
|
|
20
|
+
const percent = `${avgCoverage} %`;
|
|
21
|
+
entries.push(`Code coverage: ${(0, nanocolors_1.bold)(testCoverage.passed ? (0, nanocolors_1.green)(percent) : (0, nanocolors_1.red)(percent))}`);
|
|
22
|
+
}
|
|
23
|
+
if (!testCoverage.passed && coverageConfig.threshold) {
|
|
24
|
+
coverageTypes.forEach(type => {
|
|
25
|
+
if (testCoverage.summary[type].pct < coverageConfig.threshold[type]) {
|
|
26
|
+
entries.push(`Coverage for ${(0, nanocolors_1.bold)(type)} failed with ${(0, nanocolors_1.bold)((0, nanocolors_1.red)(`${testCoverage.summary[type].pct} %`))} compared to configured ${(0, nanocolors_1.bold)(`${coverageConfig.threshold[type]} %`)}`);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
if (!watch && coverageConfig.report && coverageConfig.reporters?.includes('lcov')) {
|
|
31
|
+
entries.push(`View full coverage report at ${(0, nanocolors_1.underline)(path_1.default.join(coverageConfig.reportDir ?? '', 'lcov-report', 'index.html'))}`);
|
|
32
|
+
}
|
|
33
|
+
entries.push('');
|
|
34
|
+
return entries;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=getCodeCoverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCodeCoverage.js","sourceRoot":"","sources":["../../src/reporter/getCodeCoverage.ts"],"names":[],"mappings":";;;;;AAeA,0CAsCC;AAhDD,2CAAyD;AACzD,gDAAwB;AAExB,MAAM,aAAa,GAAsC;IACvD,OAAO;IACP,YAAY;IACZ,UAAU;IACV,WAAW;CACZ,CAAC;AAEF,SAAgB,eAAe,CAC7B,YAA0B,EAC1B,KAAc,EACd,cAA8B;IAE9B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACjG,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IAE9D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,GAAG,WAAW,IAAI,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAA,iBAAI,EAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,kBAAK,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAA,gBAAG,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,CAAC;QACrD,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,cAAc,CAAC,SAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrE,OAAO,CAAC,IAAI,CACV,gBAAgB,IAAA,iBAAI,EAAC,IAAI,CAAC,gBAAgB,IAAA,iBAAI,EAC5C,IAAA,gBAAG,EAAC,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAC3C,2BAA2B,IAAA,iBAAI,EAAC,GAAG,cAAc,CAAC,SAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3E,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAClF,OAAO,CAAC,IAAI,CACV,gCAAgC,IAAA,sBAAS,EACvC,cAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,EAAE,EAAE,aAAa,EAAE,YAAY,CAAC,CACvE,EAAE,CACJ,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEjB,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type BrowserLauncher, type CoverageConfig, type TestCoverage, type TestRunnerCoreConfig, type TestSessionManager } from '@web/test-runner-core';
|
|
2
|
+
export interface TestProgressArgs {
|
|
3
|
+
browsers: BrowserLauncher[];
|
|
4
|
+
browserNames: string[];
|
|
5
|
+
testFiles: string[];
|
|
6
|
+
testRun: number;
|
|
7
|
+
sessions: TestSessionManager;
|
|
8
|
+
startTime: number;
|
|
9
|
+
watch: boolean;
|
|
10
|
+
focusedTestFile?: string;
|
|
11
|
+
coverage: boolean;
|
|
12
|
+
coverageConfig?: CoverageConfig;
|
|
13
|
+
testCoverage?: TestCoverage;
|
|
14
|
+
}
|
|
15
|
+
export declare function getTestProgressReport(config: TestRunnerCoreConfig, args: TestProgressArgs): string[];
|
|
16
|
+
//# sourceMappingURL=getTestProgress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTestProgress.d.ts","sourceRoot":"","sources":["../../src/reporter/getTestProgress.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAO/B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AA0BD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,gBAAgB,YAgIzF"}
|