@global-cache/core 0.4.0-3 → 0.4.0-4
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/dist/client/config.d.ts +4 -6
- package/dist/client/config.d.ts.map +1 -1
- package/dist/client/config.js +17 -14
- package/dist/client/config.js.map +1 -1
- package/dist/client/index.d.ts +4 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +17 -16
- package/dist/client/index.js.map +1 -1
- package/package.json +1 -1
- package/src/client/config.ts +23 -15
- package/src/client/index.ts +20 -15
package/dist/client/config.d.ts
CHANGED
|
@@ -5,7 +5,8 @@ export type GlobalCacheConfig = {
|
|
|
5
5
|
serverUrl?: string;
|
|
6
6
|
};
|
|
7
7
|
type GlobalConfigInternal = GlobalCacheConfig & {
|
|
8
|
-
|
|
8
|
+
localRunId?: string;
|
|
9
|
+
externalRunId?: string;
|
|
9
10
|
localServerUrl?: string;
|
|
10
11
|
};
|
|
11
12
|
export declare class GlobalConfig {
|
|
@@ -15,19 +16,16 @@ export declare class GlobalConfig {
|
|
|
15
16
|
/**
|
|
16
17
|
* Generate new runId or re-use from env variable.
|
|
17
18
|
* There can be multiple test runs within single server session.
|
|
18
|
-
*
|
|
19
|
-
* Note: it could be a method on GlobalCacheClient, but having it here exposes it to public.
|
|
20
|
-
* Current approach is that test run is generated automatically on process start
|
|
21
|
-
* and cleared in reporter onEnd.
|
|
22
19
|
*/
|
|
23
20
|
newTestRun(): void;
|
|
21
|
+
get runId(): string;
|
|
22
|
+
get externalRunId(): string | undefined;
|
|
24
23
|
get localServerUrl(): string | undefined;
|
|
25
24
|
get externalServerUrl(): string | undefined;
|
|
26
25
|
get serverUrl(): string | undefined;
|
|
27
26
|
get ignoreTTL(): boolean;
|
|
28
27
|
get basePath(): string | undefined;
|
|
29
28
|
get disabled(): boolean;
|
|
30
|
-
get runId(): string;
|
|
31
29
|
}
|
|
32
30
|
export declare const globalConfig: GlobalConfig;
|
|
33
31
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/client/config.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,iBAAiB,GAAG;IAE9B,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,oBAAoB,GAAG,iBAAiB,GAAG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/client/config.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,iBAAiB,GAAG;IAE9B,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,oBAAoB,GAAG,iBAAiB,GAAG;IAE9C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA4B;;IAU1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAK5C;;;OAGG;IACH,UAAU;IASV,IAAI,KAAK,WAGR;IAED,IAAI,aAAa,uBAEhB;IAED,IAAI,cAAc,uBAEjB;IAED,IAAI,iBAAiB,uBAEpB;IAED,IAAI,SAAS,uBAEZ;IAED,IAAI,SAAS,YAEZ;IAED,IAAI,QAAQ,uBAEX;IAED,IAAI,QAAQ,YAEX;CACF;AAYD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
package/dist/client/config.js
CHANGED
|
@@ -12,9 +12,9 @@ class GlobalConfig {
|
|
|
12
12
|
this.config = {};
|
|
13
13
|
Object.assign(this.config, getConfigFromEnv());
|
|
14
14
|
// Set runId when the main process starts, workers will re-use it.
|
|
15
|
-
// In VSCode, every click on test
|
|
16
|
-
//
|
|
17
|
-
if (!this.
|
|
15
|
+
// In VSCode, every click on test does not restart the main process,
|
|
16
|
+
// so we reset test run in reporter onEnd.
|
|
17
|
+
if (!this.runId)
|
|
18
18
|
this.newTestRun();
|
|
19
19
|
}
|
|
20
20
|
update(config) {
|
|
@@ -24,13 +24,22 @@ class GlobalConfig {
|
|
|
24
24
|
/**
|
|
25
25
|
* Generate new runId or re-use from env variable.
|
|
26
26
|
* There can be multiple test runs within single server session.
|
|
27
|
-
*
|
|
28
|
-
* Note: it could be a method on GlobalCacheClient, but having it here exposes it to public.
|
|
29
|
-
* Current approach is that test run is generated automatically on process start
|
|
30
|
-
* and cleared in reporter onEnd.
|
|
31
27
|
*/
|
|
32
28
|
newTestRun() {
|
|
33
|
-
|
|
29
|
+
const externalRunId = process.env.GLOBAL_CACHE_RUN_ID;
|
|
30
|
+
if (externalRunId) {
|
|
31
|
+
this.update({ externalRunId });
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.update({ localRunId: (0, node_crypto_1.randomUUID)() });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
get runId() {
|
|
38
|
+
const { externalRunId, localRunId } = this.config;
|
|
39
|
+
return externalRunId || localRunId || '';
|
|
40
|
+
}
|
|
41
|
+
get externalRunId() {
|
|
42
|
+
return this.config.externalRunId;
|
|
34
43
|
}
|
|
35
44
|
get localServerUrl() {
|
|
36
45
|
return this.config.localServerUrl;
|
|
@@ -50,12 +59,6 @@ class GlobalConfig {
|
|
|
50
59
|
get disabled() {
|
|
51
60
|
return Boolean(this.config.disabled);
|
|
52
61
|
}
|
|
53
|
-
get runId() {
|
|
54
|
-
const { runId } = this.config;
|
|
55
|
-
if (!runId)
|
|
56
|
-
throw new Error('RunId is not set.');
|
|
57
|
-
return runId;
|
|
58
|
-
}
|
|
59
62
|
}
|
|
60
63
|
exports.GlobalConfig = GlobalConfig;
|
|
61
64
|
function getConfigFromEnv() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/client/config.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,6CAAyC;AACzC,mDAAyD;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/client/config.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,6CAAyC;AACzC,mDAAyD;AAsBzD,MAAa,YAAY;IAGvB;QAFQ,WAAM,GAAyB,EAAE,CAAC;QAGxC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC/C,kEAAkE;QAClE,oEAAoE;QACpE,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,MAAqC;QAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAA,wBAAe,EAAC,MAAM,CAAC,CAAC,CAAC;QACpD,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACtD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,IAAA,wBAAU,GAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,KAAK;QACP,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAClD,OAAO,aAAa,IAAI,UAAU,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACnC,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;IACpC,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,cAAc,CAAC;IACvD,CAAC;IAED,IAAI,SAAS;QACX,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;CACF;AA7DD,oCA6DC;AAED,SAAS,gBAAgB;IACvB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACtD,OAAO,aAAa,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;AACtF,CAAC;AAED,SAAS,eAAe,CAAC,MAAyB;IAChD,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,+BAA+B;AAClB,QAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -28,9 +28,11 @@ export declare class GlobalCacheClient<S extends DefaultKeysSchema = DefaultKeys
|
|
|
28
28
|
*/
|
|
29
29
|
getStaleList<ValueType>(prefix: string): Promise<ValueType[]>;
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* Reset current test run:
|
|
32
|
+
* - clear all non-persistent values
|
|
33
|
+
* - generate new test run ID
|
|
32
34
|
*/
|
|
33
|
-
|
|
35
|
+
resetTestRun(): Promise<void>;
|
|
34
36
|
private computeValue;
|
|
35
37
|
}
|
|
36
38
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAK3D,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGjE,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,qBAAa,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB;IAI5E,MAAM,CAAC,MAAM,EAAE,iBAAiB;IAIhC;;;;;;OAMG;IACH,OAAO,KAAK,GAAG,GAGd;IAED;;OAEG;IAEG,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAsDzE;;;;OAIG;IACG,QAAQ,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;IAQ9C;;;;OAIG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM;IAQ5C
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAK3D,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGjE,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,qBAAa,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB;IAI5E,MAAM,CAAC,MAAM,EAAE,iBAAiB;IAIhC;;;;;;OAMG;IACH,OAAO,KAAK,GAAG,GAGd;IAED;;OAEG;IAEG,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAsDzE;;;;OAIG;IACG,QAAQ,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;IAQ9C;;;;OAIG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM;IAQ5C;;;;OAIG;IACG,YAAY;YA0BJ,YAAY;CAS3B"}
|
package/dist/client/index.js
CHANGED
|
@@ -96,32 +96,33 @@ class GlobalCacheClient {
|
|
|
96
96
|
return values;
|
|
97
97
|
}
|
|
98
98
|
/**
|
|
99
|
-
*
|
|
99
|
+
* Reset current test run:
|
|
100
|
+
* - clear all non-persistent values
|
|
101
|
+
* - generate new test run ID
|
|
100
102
|
*/
|
|
101
|
-
async
|
|
102
|
-
//
|
|
103
|
-
if (
|
|
103
|
+
async resetTestRun() {
|
|
104
|
+
// don't clear external run ID, as it can be used by other shards.
|
|
105
|
+
if (config_1.globalConfig.externalRunId)
|
|
104
106
|
return;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if (!config_1.globalConfig.runId)
|
|
107
|
+
if (!config_1.globalConfig.runId) {
|
|
108
|
+
logger_1.logger.warn(`Expected test run ID.`);
|
|
108
109
|
return;
|
|
110
|
+
}
|
|
109
111
|
(0, debug_1.debug)(`Clearing test-run: ${config_1.globalConfig.runId}`);
|
|
110
112
|
try {
|
|
111
113
|
await this.api.clearTestRun();
|
|
112
114
|
(0, debug_1.debug)('Cleared.');
|
|
113
115
|
}
|
|
114
116
|
catch (e) {
|
|
115
|
-
//
|
|
116
|
-
logger_1.logger.warn(`Failed to clear global-cache test run: ${e
|
|
117
|
-
}
|
|
118
|
-
finally {
|
|
119
|
-
// After clearing test run values, clear test run ID as well.
|
|
120
|
-
// This is useful for VSCode runs:
|
|
121
|
-
// when you make changes and re-run tests, it should grab the new values
|
|
122
|
-
// without trying to re-use cache.
|
|
123
|
-
config_1.globalConfig.update({ runId: '' });
|
|
117
|
+
// Show error as one-line warning to not mix with tests output.
|
|
118
|
+
logger_1.logger.warn(`Failed to clear global-cache test run: ${e?.message}`);
|
|
124
119
|
}
|
|
120
|
+
// Generate new test run id.
|
|
121
|
+
// This is useful for VSCode: when you make changes and re-run tests by click,
|
|
122
|
+
// it should re-compute values without trying to re-use cache.
|
|
123
|
+
// There is no place to reliably detect test run start:
|
|
124
|
+
// on subsequent runs in VSCode, Playwright config is evaluated only in workers.
|
|
125
|
+
config_1.globalConfig.newTestRun();
|
|
125
126
|
}
|
|
126
127
|
async computeValue(fn) {
|
|
127
128
|
try {
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/client/config.ts
CHANGED
|
@@ -17,7 +17,11 @@ export type GlobalCacheConfig = {
|
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
type GlobalConfigInternal = GlobalCacheConfig & {
|
|
20
|
-
|
|
20
|
+
/* Test run ID generated locally */
|
|
21
|
+
localRunId?: string;
|
|
22
|
+
/* Test run ID provided via env var (sharing) */
|
|
23
|
+
externalRunId?: string;
|
|
24
|
+
/* Local server URL started by setup */
|
|
21
25
|
localServerUrl?: string;
|
|
22
26
|
};
|
|
23
27
|
|
|
@@ -27,9 +31,9 @@ export class GlobalConfig {
|
|
|
27
31
|
constructor() {
|
|
28
32
|
Object.assign(this.config, getConfigFromEnv());
|
|
29
33
|
// Set runId when the main process starts, workers will re-use it.
|
|
30
|
-
// In VSCode, every click on test
|
|
31
|
-
//
|
|
32
|
-
if (!this.
|
|
34
|
+
// In VSCode, every click on test does not restart the main process,
|
|
35
|
+
// so we reset test run in reporter onEnd.
|
|
36
|
+
if (!this.runId) this.newTestRun();
|
|
33
37
|
}
|
|
34
38
|
|
|
35
39
|
update(config: Partial<GlobalConfigInternal>) {
|
|
@@ -40,13 +44,23 @@ export class GlobalConfig {
|
|
|
40
44
|
/**
|
|
41
45
|
* Generate new runId or re-use from env variable.
|
|
42
46
|
* There can be multiple test runs within single server session.
|
|
43
|
-
*
|
|
44
|
-
* Note: it could be a method on GlobalCacheClient, but having it here exposes it to public.
|
|
45
|
-
* Current approach is that test run is generated automatically on process start
|
|
46
|
-
* and cleared in reporter onEnd.
|
|
47
47
|
*/
|
|
48
48
|
newTestRun() {
|
|
49
|
-
|
|
49
|
+
const externalRunId = process.env.GLOBAL_CACHE_RUN_ID;
|
|
50
|
+
if (externalRunId) {
|
|
51
|
+
this.update({ externalRunId });
|
|
52
|
+
} else {
|
|
53
|
+
this.update({ localRunId: randomUUID() });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
get runId() {
|
|
58
|
+
const { externalRunId, localRunId } = this.config;
|
|
59
|
+
return externalRunId || localRunId || '';
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
get externalRunId() {
|
|
63
|
+
return this.config.externalRunId;
|
|
50
64
|
}
|
|
51
65
|
|
|
52
66
|
get localServerUrl() {
|
|
@@ -72,12 +86,6 @@ export class GlobalConfig {
|
|
|
72
86
|
get disabled() {
|
|
73
87
|
return Boolean(this.config.disabled);
|
|
74
88
|
}
|
|
75
|
-
|
|
76
|
-
get runId() {
|
|
77
|
-
const { runId } = this.config;
|
|
78
|
-
if (!runId) throw new Error('RunId is not set.');
|
|
79
|
-
return runId;
|
|
80
|
-
}
|
|
81
89
|
}
|
|
82
90
|
|
|
83
91
|
function getConfigFromEnv() {
|
package/src/client/index.ts
CHANGED
|
@@ -113,29 +113,34 @@ export class GlobalCacheClient<S extends DefaultKeysSchema = DefaultKeysSchema>
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
/**
|
|
116
|
-
*
|
|
116
|
+
* Reset current test run:
|
|
117
|
+
* - clear all non-persistent values
|
|
118
|
+
* - generate new test run ID
|
|
117
119
|
*/
|
|
118
|
-
async
|
|
119
|
-
//
|
|
120
|
-
if (
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
120
|
+
async resetTestRun() {
|
|
121
|
+
// don't clear external run ID, as it can be used by other shards.
|
|
122
|
+
if (globalConfig.externalRunId) return;
|
|
123
|
+
|
|
124
|
+
if (!globalConfig.runId) {
|
|
125
|
+
logger.warn(`Expected test run ID.`);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
124
128
|
|
|
125
129
|
debug(`Clearing test-run: ${globalConfig.runId}`);
|
|
126
130
|
try {
|
|
127
131
|
await this.api.clearTestRun();
|
|
128
132
|
debug('Cleared.');
|
|
129
133
|
} catch (e) {
|
|
130
|
-
//
|
|
131
|
-
logger.warn(`Failed to clear global-cache test run: ${
|
|
132
|
-
} finally {
|
|
133
|
-
// After clearing test run values, clear test run ID as well.
|
|
134
|
-
// This is useful for VSCode runs:
|
|
135
|
-
// when you make changes and re-run tests, it should grab the new values
|
|
136
|
-
// without trying to re-use cache.
|
|
137
|
-
globalConfig.update({ runId: '' });
|
|
134
|
+
// Show error as one-line warning to not mix with tests output.
|
|
135
|
+
logger.warn(`Failed to clear global-cache test run: ${e?.message}`);
|
|
138
136
|
}
|
|
137
|
+
|
|
138
|
+
// Generate new test run id.
|
|
139
|
+
// This is useful for VSCode: when you make changes and re-run tests by click,
|
|
140
|
+
// it should re-compute values without trying to re-use cache.
|
|
141
|
+
// There is no place to reliably detect test run start:
|
|
142
|
+
// on subsequent runs in VSCode, Playwright config is evaluated only in workers.
|
|
143
|
+
globalConfig.newTestRun();
|
|
139
144
|
}
|
|
140
145
|
|
|
141
146
|
private async computeValue<ValueType>(fn: () => ValueType) {
|