@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.
@@ -5,7 +5,8 @@ export type GlobalCacheConfig = {
5
5
  serverUrl?: string;
6
6
  };
7
7
  type GlobalConfigInternal = GlobalCacheConfig & {
8
- runId?: string;
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;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA4B;;IAO1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAK5C;;;OAGG;IACH,UAAU;IAIV,IAAI,cAAc,uBAEjB;IAED,IAAI,iBAAiB,uBAEpB;IAED,IAAI,SAAS,uBAEZ;IAED,IAAI,SAAS,YAEZ;IAED,IAAI,QAAQ,uBAEX;IAED,IAAI,QAAQ,YAEX;IAED,IAAI,KAAK,WAIR;CACF;AAYD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
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"}
@@ -11,7 +11,10 @@ class GlobalConfig {
11
11
  constructor() {
12
12
  this.config = {};
13
13
  Object.assign(this.config, getConfigFromEnv());
14
- if (!this.config.runId)
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
- this.update({ runId: process.env.GLOBAL_CACHE_RUN_ID || (0, node_crypto_1.randomUUID)() });
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;AAkBzD,MAAa,YAAY;IAGvB;QAFQ,WAAM,GAAyB,EAAE,CAAC;QAGxC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IAC5C,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,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAA,wBAAU,GAAE,EAAE,CAAC,CAAC;IAC1E,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;IAED,IAAI,KAAK;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAlDD,oCAkDC;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"}
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"}
@@ -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
- clearTestRun(): Promise<void>;
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;IAQtC,YAAY;YAMJ,YAAY;CAS3B"}
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"}
@@ -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
- async clearTestRun() {
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
- await this.api.clearTestRun();
101
- (0, debug_1.debug)('Cleared.');
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 {
@@ -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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"}
@@ -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
  }
@@ -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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@global-cache/core",
3
3
  "description": "Key-value cache for sharing data between parallel workers.",
4
- "version": "0.4.0-2",
4
+ "version": "0.4.0-4",
5
5
  "type": "commonjs",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -17,7 +17,11 @@ export type GlobalCacheConfig = {
17
17
  };
18
18
 
19
19
  type GlobalConfigInternal = GlobalCacheConfig & {
20
- runId?: string;
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
- if (!this.config.runId) this.newTestRun();
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
- this.update({ runId: process.env.GLOBAL_CACHE_RUN_ID || randomUUID() });
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() {
@@ -112,10 +112,35 @@ export class GlobalCacheClient<S extends DefaultKeysSchema = DefaultKeysSchema>
112
112
  return values as ValueType[];
113
113
  }
114
114
 
115
- async clearTestRun() {
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
- await this.api.clearTestRun();
118
- debug('Cleared.');
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) {
@@ -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
  }