@empiricalrun/playwright-utils 0.60.0 → 0.60.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @empiricalrun/playwright-utils
2
2
 
3
+ ## 0.60.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 185182e: refactor: route test-execution api-worker requests through openapi-fetch.
8
+
9
+ ## 0.60.1
10
+
11
+ ### Patch Changes
12
+
13
+ - 1a9be2c: feat: allow waitForEmail callers to set the earliest received time
14
+ - c77aae6: Use the incremental blob reporter as the only blob reporter for sharded runs.
15
+ - 3497d85: refactor: source Inbox message parsing from the provider API
16
+ - @empiricalrun/cua@0.4.2
17
+ - @empiricalrun/llm@0.27.1
18
+ - @empiricalrun/reporter@0.30.0
19
+
3
20
  ## 0.60.0
4
21
 
5
22
  ### Minor Changes
@@ -9,6 +9,7 @@ export type TwoCaptchaProxyResponse = components["schemas"]["TwoCaptchaProxyResp
9
9
  export type ProjectKvGetResponse = components["schemas"]["ProjectKvGetResponse"];
10
10
  export type ProjectKvSetRequest = NonNullable<paths["/api/projects/kv"]["post"]["requestBody"]>["content"]["application/json"];
11
11
  export type ProjectKvSetResponse = components["schemas"]["ProjectKvSetResponse"];
12
+ export type TestCaseRunEndEventRequest = NonNullable<paths["/api/test-runs/events"]["put"]["requestBody"]>["content"]["application/json"];
12
13
  /**
13
14
  * OpenAI client config for the LLM calls playwright-utils makes from inside a
14
15
  * test run — the overlay-dismissal browser agent and the toLookRight visual
@@ -45,6 +46,7 @@ export declare class ApiWorkerClient {
45
46
  getProjectKv(key: string): Promise<ProjectKvGetResponse>;
46
47
  setProjectKv(body: ProjectKvSetRequest): Promise<ProjectKvSetResponse>;
47
48
  postProviderProxy(path: ProviderProxyPath, body: ProviderProxyRequest): Promise<ProviderProxyResponse>;
49
+ putTestCaseRunEndEvent(body: TestCaseRunEndEventRequest): Promise<void>;
48
50
  unwrap<T>(result: {
49
51
  data?: unknown;
50
52
  error?: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"api-worker-client.d.ts","sourceRoot":"","sources":["../src/api-worker-client.ts"],"names":[],"mappings":"AACA,OAAqB,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAExE,KAAK,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAEzC,KAAK,iBAAiB,GAClB,kBAAkB,GAClB,sBAAsB,GACtB,yBAAyB,CAAC;AAE9B,MAAM,MAAM,oBAAoB,GAC9B,UAAU,CAAC,SAAS,CAAC,CAAC,6BAA6B,CAAC,CAAC;AACvD,MAAM,MAAM,qBAAqB,GAC/B,UAAU,CAAC,SAAS,CAAC,CAAC,8BAA8B,CAAC,CAAC;AACxD,MAAM,MAAM,sBAAsB,GAChC,UAAU,CAAC,SAAS,CAAC,CAAC,wBAAwB,CAAC,CAAC;AAClD,MAAM,MAAM,uBAAuB,GACjC,UAAU,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,CAAC;AACnD,MAAM,MAAM,oBAAoB,GAC9B,UAAU,CAAC,SAAS,CAAC,CAAC,sBAAsB,CAAC,CAAC;AAChD,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAC3C,KAAK,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CACjD,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACjC,MAAM,MAAM,oBAAoB,GAC9B,UAAU,CAAC,SAAS,CAAC,CAAC,sBAAsB,CAAC,CAAC;AAQhD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,IAChC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC,SAAS,CAgBZ;AAED,qBAAa,SAAU,SAAQ,KAAK;IAClC,MAAM,EAAE,MAAM,CAAC;IAEf,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAG1C;CACF;AAED,qBAAa,qBAAsB,SAAQ,SAAS;CAAG;AACvD,qBAAa,kBAAmB,SAAQ,SAAS;CAAG;AA+CpD,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAErC,YAAY,EACV,aAAa,EACb,OAAO,GACR,GAAE;QACD,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;KACb,EAgBL;IAED,UAAU,IAAI,MAAM,CAEnB;IAEK,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAK7D;IAEK,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAK3E;IAEK,iBAAiB,CACrB,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,qBAAqB,CAAC,CAKhC;IAED,MAAM,CAAC,CAAC,EACN,MAAM,EAAE;QACN,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,QAAQ,CAAC;KACpB,EACD,KAAK,EAAE,MAAM,GACZ,CAAC,CAUH;CACF"}
1
+ {"version":3,"file":"api-worker-client.d.ts","sourceRoot":"","sources":["../src/api-worker-client.ts"],"names":[],"mappings":"AACA,OAAqB,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAExE,KAAK,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAEzC,KAAK,iBAAiB,GAClB,kBAAkB,GAClB,sBAAsB,GACtB,yBAAyB,CAAC;AAE9B,MAAM,MAAM,oBAAoB,GAC9B,UAAU,CAAC,SAAS,CAAC,CAAC,6BAA6B,CAAC,CAAC;AACvD,MAAM,MAAM,qBAAqB,GAC/B,UAAU,CAAC,SAAS,CAAC,CAAC,8BAA8B,CAAC,CAAC;AACxD,MAAM,MAAM,sBAAsB,GAChC,UAAU,CAAC,SAAS,CAAC,CAAC,wBAAwB,CAAC,CAAC;AAClD,MAAM,MAAM,uBAAuB,GACjC,UAAU,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,CAAC;AACnD,MAAM,MAAM,oBAAoB,GAC9B,UAAU,CAAC,SAAS,CAAC,CAAC,sBAAsB,CAAC,CAAC;AAChD,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAC3C,KAAK,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CACjD,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACjC,MAAM,MAAM,oBAAoB,GAC9B,UAAU,CAAC,SAAS,CAAC,CAAC,sBAAsB,CAAC,CAAC;AAChD,MAAM,MAAM,0BAA0B,GAAG,WAAW,CAClD,KAAK,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CACrD,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAQjC;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,IAChC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC,SAAS,CAgBZ;AAED,qBAAa,SAAU,SAAQ,KAAK;IAClC,MAAM,EAAE,MAAM,CAAC;IAEf,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAG1C;CACF;AAED,qBAAa,qBAAsB,SAAQ,SAAS;CAAG;AACvD,qBAAa,kBAAmB,SAAQ,SAAS;CAAG;AA+CpD,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAErC,YAAY,EACV,aAAa,EACb,OAAO,GACR,GAAE;QACD,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;KACb,EAgBL;IAED,UAAU,IAAI,MAAM,CAEnB;IAEK,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAK7D;IAEK,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAK3E;IAEK,iBAAiB,CACrB,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,qBAAqB,CAAC,CAKhC;IAEK,sBAAsB,CAC1B,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,IAAI,CAAC,CAGf;IAED,MAAM,CAAC,CAAC,EACN,MAAM,EAAE;QACN,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,QAAQ,CAAC;KACpB,EACD,KAAK,EAAE,MAAM,GACZ,CAAC,CAUH;CACF"}
@@ -131,6 +131,10 @@ class ApiWorkerClient {
131
131
  });
132
132
  return this.unwrap(result, `POST ${path}`);
133
133
  }
134
+ async putTestCaseRunEndEvent(body) {
135
+ const result = await this.client.PUT("/api/test-runs/events", { body });
136
+ this.unwrap(result, "PUT /api/test-runs/events");
137
+ }
134
138
  unwrap(result, label) {
135
139
  if (result.data !== undefined) {
136
140
  return result.data;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAgBzD,wBAAgB,gBAAgB,IAAI,MAAM,CAazC;AA+CD,eAAO,MAAM,UAAU,EAAE,oBA+BxB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,iBAarB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAgBzD,wBAAgB,gBAAgB,IAAI,MAAM,CAazC;AA6BD,eAAO,MAAM,UAAU,EAAE,oBA+BxB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,iBAarB,CAAC"}
@@ -39,30 +39,12 @@ function getReporters() {
39
39
  if (process.env.HAS_SHARDING && !process.env.SHARD_INDEX) {
40
40
  throw new Error("Invalid env variables: HAS_SHARDING needs SHARD_INDEX");
41
41
  }
42
- // Set from the ibr_only_blob_reporter feature flag by test-run-worker: the
43
- // incremental blob reporter's clean-finish upload (with its completeness
44
- // marker) is the merge input, so the native blob reporter would only write
45
- // a zip the merge step discards as superseded.
46
- const ibrOnly = process.env.IBR_ONLY_BLOB_REPORTER === "true";
47
- const nativeBlob = ibrOnly
48
- ? []
49
- : [
50
- [
51
- "blob",
52
- {
53
- outputDir: "blob-report",
54
- fileName: `report-${process.env.SHARD_INDEX}.zip`,
55
- },
56
- ],
57
- ];
58
42
  const middle = process.env.HAS_SHARDING
59
43
  ? [
60
- ...nativeBlob,
61
- // Salvage path for a blob report that never gets written: on SIGINT the
62
- // blob reporter can be cut off mid-run, and this one has already been
63
- // streaming events to disk. It is only useful where a merge step exists
64
- // to consume its zip, which is exactly where the blob reporter runs -
65
- // so it is gated on sharding rather than on the run being on spot.
44
+ // The incremental reporter's clean-finish upload (with its completeness
45
+ // marker) is the merge input. It also salvages interrupted runs because
46
+ // it streams events to disk instead of writing the report only on end.
47
+ // It is useful where a merge step exists, so it is gated on sharding.
66
48
  [
67
49
  "./node_modules/@empiricalrun/playwright-utils/dist/reporter/incremental-blob-reporter.js",
68
50
  ],
package/dist/email.d.ts CHANGED
@@ -1,10 +1,15 @@
1
1
  import { type InboxEmail } from "./inbox-client";
2
2
  import { type MailosaurEmail } from "./mailosaur-client";
3
3
  export type Email = MailosaurEmail | InboxEmail;
4
- type QueryFilter = {
4
+ export type WaitForEmailOptions = {
5
5
  from?: string;
6
6
  subject?: string;
7
7
  body?: string;
8
+ /**
9
+ * Only return emails received at or after this time.
10
+ * Defaults to five seconds before waitForEmail is called.
11
+ */
12
+ receivedAfter?: Date;
8
13
  };
9
14
  type EmailProvider = "inbox" | "mailosaur";
10
15
  type EmailClientOptions = {
@@ -18,7 +23,7 @@ export declare class EmailClient {
18
23
  private client;
19
24
  constructor(opts?: EmailClientOptions);
20
25
  getAddress(): string;
21
- waitForEmail(filter?: QueryFilter): Promise<Email>;
26
+ waitForEmail(options?: WaitForEmailOptions): Promise<Email>;
22
27
  }
23
28
  export {};
24
29
  //# sourceMappingURL=email.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../src/email.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE1E,MAAM,MAAM,KAAK,GAAG,cAAc,GAAG,UAAU,CAAC;AAEhD,KAAK,WAAW,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAMF,KAAK,aAAa,GAAG,OAAO,GAAG,WAAW,CAAC;AAM3C,KAAK,kBAAkB,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,MAAM,CAAsB;IAEpC,YAAY,IAAI,GAAE,kBAAuB,EA2BxC;IAED,UAAU,IAAI,MAAM,CAEnB;IAEK,YAAY,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAEvD;CACF"}
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../src/email.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE1E,MAAM,MAAM,KAAK,GAAG,cAAc,GAAG,UAAU,CAAC;AAEhD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,IAAI,CAAC;CACtB,CAAC;AAMF,KAAK,aAAa,GAAG,OAAO,GAAG,WAAW,CAAC;AAM3C,KAAK,kBAAkB,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,MAAM,CAAsB;IAEpC,YAAY,IAAI,GAAE,kBAAuB,EA2BxC;IAED,UAAU,IAAI,MAAM,CAEnB;IAEK,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC,CAEhE;CACF"}
package/dist/email.js CHANGED
@@ -38,8 +38,8 @@ class EmailClient {
38
38
  getAddress() {
39
39
  return this.address;
40
40
  }
41
- async waitForEmail(filter) {
42
- return this.client.waitForEmail(this.address, filter);
41
+ async waitForEmail(options) {
42
+ return this.client.waitForEmail(this.address, options);
43
43
  }
44
44
  }
45
45
  exports.EmailClient = EmailClient;