@global-cache/core 0.4.0-2 → 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 -2
- package/dist/client/config.d.ts.map +1 -1
- package/dist/client/config.js +18 -8
- package/dist/client/config.js.map +1 -1
- package/dist/client/index.d.ts +6 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +27 -3
- package/dist/client/index.js.map +1 -1
- package/dist/shared/debug.js +4 -0
- package/dist/shared/debug.js.map +1 -1
- package/package.json +1 -1
- package/src/client/config.ts +24 -9
- package/src/client/index.ts +28 -3
- package/src/shared/debug.ts +3 -0
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 {
|
|
@@ -17,13 +18,14 @@ export declare class GlobalConfig {
|
|
|
17
18
|
* There can be multiple test runs within single server session.
|
|
18
19
|
*/
|
|
19
20
|
newTestRun(): void;
|
|
21
|
+
get runId(): string;
|
|
22
|
+
get externalRunId(): string | undefined;
|
|
20
23
|
get localServerUrl(): string | undefined;
|
|
21
24
|
get externalServerUrl(): string | undefined;
|
|
22
25
|
get serverUrl(): string | undefined;
|
|
23
26
|
get ignoreTTL(): boolean;
|
|
24
27
|
get basePath(): string | undefined;
|
|
25
28
|
get disabled(): boolean;
|
|
26
|
-
get runId(): string;
|
|
27
29
|
}
|
|
28
30
|
export declare const globalConfig: GlobalConfig;
|
|
29
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
|
@@ -11,7 +11,10 @@ class GlobalConfig {
|
|
|
11
11
|
constructor() {
|
|
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 does not restart the main process,
|
|
16
|
+
// so we reset test run in reporter onEnd.
|
|
17
|
+
if (!this.runId)
|
|
15
18
|
this.newTestRun();
|
|
16
19
|
}
|
|
17
20
|
update(config) {
|
|
@@ -23,7 +26,20 @@ class GlobalConfig {
|
|
|
23
26
|
* There can be multiple test runs within single server session.
|
|
24
27
|
*/
|
|
25
28
|
newTestRun() {
|
|
26
|
-
|
|
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;
|
|
27
43
|
}
|
|
28
44
|
get localServerUrl() {
|
|
29
45
|
return this.config.localServerUrl;
|
|
@@ -43,12 +59,6 @@ class GlobalConfig {
|
|
|
43
59
|
get disabled() {
|
|
44
60
|
return Boolean(this.config.disabled);
|
|
45
61
|
}
|
|
46
|
-
get runId() {
|
|
47
|
-
const { runId } = this.config;
|
|
48
|
-
if (!runId)
|
|
49
|
-
throw new Error('RunId is not set.');
|
|
50
|
-
return runId;
|
|
51
|
-
}
|
|
52
62
|
}
|
|
53
63
|
exports.GlobalConfig = GlobalConfig;
|
|
54
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
|
@@ -27,7 +27,12 @@ export declare class GlobalCacheClient<S extends DefaultKeysSchema = DefaultKeys
|
|
|
27
27
|
* - for persistent keys it would be the old value if it was changed during this run
|
|
28
28
|
*/
|
|
29
29
|
getStaleList<ValueType>(prefix: string): Promise<ValueType[]>;
|
|
30
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Reset current test run:
|
|
32
|
+
* - clear all non-persistent values
|
|
33
|
+
* - generate new test run ID
|
|
34
|
+
*/
|
|
35
|
+
resetTestRun(): Promise<void>;
|
|
31
36
|
private computeValue;
|
|
32
37
|
}
|
|
33
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;
|
|
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
|
@@ -95,10 +95,34 @@ class GlobalCacheClient {
|
|
|
95
95
|
(0, debug_1.debugKey)(prefix, `Fetched: ${values.length} value(s)`);
|
|
96
96
|
return values;
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
/**
|
|
99
|
+
* Reset current test run:
|
|
100
|
+
* - clear all non-persistent values
|
|
101
|
+
* - generate new test run ID
|
|
102
|
+
*/
|
|
103
|
+
async resetTestRun() {
|
|
104
|
+
// don't clear external run ID, as it can be used by other shards.
|
|
105
|
+
if (config_1.globalConfig.externalRunId)
|
|
106
|
+
return;
|
|
107
|
+
if (!config_1.globalConfig.runId) {
|
|
108
|
+
logger_1.logger.warn(`Expected test run ID.`);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
99
111
|
(0, debug_1.debug)(`Clearing test-run: ${config_1.globalConfig.runId}`);
|
|
100
|
-
|
|
101
|
-
|
|
112
|
+
try {
|
|
113
|
+
await this.api.clearTestRun();
|
|
114
|
+
(0, debug_1.debug)('Cleared.');
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
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}`);
|
|
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();
|
|
102
126
|
}
|
|
103
127
|
async computeValue(fn) {
|
|
104
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/dist/shared/debug.js
CHANGED
|
@@ -21,6 +21,10 @@ exports.debugKey = debugKey;
|
|
|
21
21
|
function getDebug(key) {
|
|
22
22
|
let debug = cache.get(key);
|
|
23
23
|
if (!debug) {
|
|
24
|
+
// Re-enable debug to pick up any changes in DEBUG env variable (e.g. from Playwright config)
|
|
25
|
+
// See: https://github.com/debug-js/debug/blob/master/src/common.js#L287
|
|
26
|
+
if (process.env.DEBUG)
|
|
27
|
+
debug_1.default.enable(process.env.DEBUG);
|
|
24
28
|
debug = (0, debug_1.default)(key);
|
|
25
29
|
cache.set(key, debug);
|
|
26
30
|
}
|
package/dist/shared/debug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/shared/debug.ts"],"names":[],"mappings":";;;;;;AAQA,sBAEC;AAVD;;;GAGG;AACH,kDAA0B;AAE1B,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;AAEhD,SAAgB,KAAK,CAAC,GAAG,IAAgC;IACvD,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACpC,CAAC;AAEM,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,OAAe,EAAE,EAAE;IACvD,QAAQ,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC,CAAC;AAFW,QAAA,QAAQ,YAEnB;AAEF,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,IAAA,eAAK,EAAC,GAAG,CAAC,CAAC;QACnB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/shared/debug.ts"],"names":[],"mappings":";;;;;;AAQA,sBAEC;AAVD;;;GAGG;AACH,kDAA0B;AAE1B,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;AAEhD,SAAgB,KAAK,CAAC,GAAG,IAAgC;IACvD,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACpC,CAAC;AAEM,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,OAAe,EAAE,EAAE;IACvD,QAAQ,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC,CAAC;AAFW,QAAA,QAAQ,YAEnB;AAEF,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,6FAA6F;QAC7F,wEAAwE;QACxE,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK;YAAE,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvD,KAAK,GAAG,IAAA,eAAK,EAAC,GAAG,CAAC,CAAC;QACnB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
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
|
|
|
@@ -26,7 +30,10 @@ export class GlobalConfig {
|
|
|
26
30
|
|
|
27
31
|
constructor() {
|
|
28
32
|
Object.assign(this.config, getConfigFromEnv());
|
|
29
|
-
|
|
33
|
+
// Set runId when the main process starts, workers will re-use it.
|
|
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();
|
|
30
37
|
}
|
|
31
38
|
|
|
32
39
|
update(config: Partial<GlobalConfigInternal>) {
|
|
@@ -39,7 +46,21 @@ export class GlobalConfig {
|
|
|
39
46
|
* There can be multiple test runs within single server session.
|
|
40
47
|
*/
|
|
41
48
|
newTestRun() {
|
|
42
|
-
|
|
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;
|
|
43
64
|
}
|
|
44
65
|
|
|
45
66
|
get localServerUrl() {
|
|
@@ -65,12 +86,6 @@ export class GlobalConfig {
|
|
|
65
86
|
get disabled() {
|
|
66
87
|
return Boolean(this.config.disabled);
|
|
67
88
|
}
|
|
68
|
-
|
|
69
|
-
get runId() {
|
|
70
|
-
const { runId } = this.config;
|
|
71
|
-
if (!runId) throw new Error('RunId is not set.');
|
|
72
|
-
return runId;
|
|
73
|
-
}
|
|
74
89
|
}
|
|
75
90
|
|
|
76
91
|
function getConfigFromEnv() {
|
package/src/client/index.ts
CHANGED
|
@@ -112,10 +112,35 @@ export class GlobalCacheClient<S extends DefaultKeysSchema = DefaultKeysSchema>
|
|
|
112
112
|
return values as ValueType[];
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
/**
|
|
116
|
+
* Reset current test run:
|
|
117
|
+
* - clear all non-persistent values
|
|
118
|
+
* - generate new test run ID
|
|
119
|
+
*/
|
|
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
|
+
}
|
|
128
|
+
|
|
116
129
|
debug(`Clearing test-run: ${globalConfig.runId}`);
|
|
117
|
-
|
|
118
|
-
|
|
130
|
+
try {
|
|
131
|
+
await this.api.clearTestRun();
|
|
132
|
+
debug('Cleared.');
|
|
133
|
+
} catch (e) {
|
|
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}`);
|
|
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();
|
|
119
144
|
}
|
|
120
145
|
|
|
121
146
|
private async computeValue<ValueType>(fn: () => ValueType) {
|
package/src/shared/debug.ts
CHANGED
|
@@ -17,6 +17,9 @@ export const debugKey = (key: string, message: string) => {
|
|
|
17
17
|
function getDebug(key: string) {
|
|
18
18
|
let debug = cache.get(key);
|
|
19
19
|
if (!debug) {
|
|
20
|
+
// Re-enable debug to pick up any changes in DEBUG env variable (e.g. from Playwright config)
|
|
21
|
+
// See: https://github.com/debug-js/debug/blob/master/src/common.js#L287
|
|
22
|
+
if (process.env.DEBUG) Debug.enable(process.env.DEBUG);
|
|
20
23
|
debug = Debug(key);
|
|
21
24
|
cache.set(key, debug);
|
|
22
25
|
}
|