@empiricalrun/playwright-utils 0.61.2 → 0.62.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/CHANGELOG.md +16 -0
- package/dist/generated/api-worker-openapi.d.ts +290 -4
- package/dist/generated/api-worker-openapi.d.ts.map +1 -1
- package/dist/test/expect/visual.d.ts.map +1 -1
- package/dist/test/expect/visual.js +0 -7
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +10 -8
- package/dist/test/scripts/index.d.ts.map +1 -1
- package/dist/test/scripts/index.js +1 -6
- package/dist/test/scripts/pw-locator-patch/highlight/expect.js +1 -1
- package/dist/test/scripts/pw-locator-patch/highlight/hover.d.ts.map +1 -1
- package/dist/test/scripts/pw-locator-patch/highlight/hover.js +0 -1
- package/dist/test/scripts/pw-locator-patch/highlight/inner-text.js +1 -1
- package/dist/test/scripts/pw-locator-patch/highlight/input-value.js +1 -1
- package/dist/test/scripts/pw-locator-patch/highlight/is-checked.js +1 -1
- package/dist/test/scripts/pw-locator-patch/highlight/is-disabled.js +1 -1
- package/dist/test/scripts/pw-locator-patch/highlight/is-editable.js +1 -1
- package/dist/test/scripts/pw-locator-patch/highlight/text-content.js +1 -1
- package/dist/test/scripts/pw-locator-patch/utils/index.d.ts +1 -2
- package/dist/test/scripts/pw-locator-patch/utils/index.d.ts.map +1 -1
- package/dist/test/scripts/pw-locator-patch/utils/index.js +3 -25
- package/dist/test/types.d.ts +1 -0
- package/dist/test/types.d.ts.map +1 -1
- package/docs/fixtures.md +10 -8
- package/package.json +3 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/test/scripts/mouse-pointer.d.ts +0 -5
- package/dist/test/scripts/mouse-pointer.d.ts.map +0 -1
- package/dist/test/scripts/mouse-pointer.js +0 -125
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @empiricalrun/playwright-utils
|
|
2
2
|
|
|
3
|
+
## 0.62.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 771fafd: Use Playwright's built-in video action annotations instead of the injected mouse pointer highlighter
|
|
8
|
+
|
|
9
|
+
## 0.61.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [842aeb6]
|
|
14
|
+
- @empiricalrun/r2-uploader@0.11.1
|
|
15
|
+
- @empiricalrun/cua@0.5.1
|
|
16
|
+
- @empiricalrun/llm@0.28.1
|
|
17
|
+
- @empiricalrun/reporter@0.30.2
|
|
18
|
+
|
|
3
19
|
## 0.61.2
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -1985,6 +1985,26 @@ export interface paths {
|
|
|
1985
1985
|
patch: operations["updateApiKey"];
|
|
1986
1986
|
trace?: never;
|
|
1987
1987
|
};
|
|
1988
|
+
"/api/banners": {
|
|
1989
|
+
parameters: {
|
|
1990
|
+
query?: never;
|
|
1991
|
+
header?: never;
|
|
1992
|
+
path?: never;
|
|
1993
|
+
cookie?: never;
|
|
1994
|
+
};
|
|
1995
|
+
/**
|
|
1996
|
+
* 🛡️ List the dashboard's warning banners
|
|
1997
|
+
* @description The warnings shown at the top of the dashboard for the scoped project's org (unpaid invoices, failed renewal, usage limit, no plan, Jira and Slack reconnects). Reads stored state only, so it is cheap enough to call while server-rendering a page.
|
|
1998
|
+
*/
|
|
1999
|
+
get: operations["listDashboardBanners"];
|
|
2000
|
+
put?: never;
|
|
2001
|
+
post?: never;
|
|
2002
|
+
delete?: never;
|
|
2003
|
+
options?: never;
|
|
2004
|
+
head?: never;
|
|
2005
|
+
patch?: never;
|
|
2006
|
+
trace?: never;
|
|
2007
|
+
};
|
|
1988
2008
|
"/api/billing/month-summary": {
|
|
1989
2009
|
parameters: {
|
|
1990
2010
|
query?: never;
|
|
@@ -6976,6 +6996,135 @@ export interface components {
|
|
|
6976
6996
|
}[];
|
|
6977
6997
|
};
|
|
6978
6998
|
};
|
|
6999
|
+
DashboardBannersResponse: {
|
|
7000
|
+
/** @description Response payload. */
|
|
7001
|
+
data: {
|
|
7002
|
+
/** @description Active banners, highest priority first. */
|
|
7003
|
+
banners: components["schemas"]["DashboardBanner"][];
|
|
7004
|
+
};
|
|
7005
|
+
};
|
|
7006
|
+
DashboardBanner: {
|
|
7007
|
+
/** @enum {string} */
|
|
7008
|
+
kind: "unpaid_invoices";
|
|
7009
|
+
params: {
|
|
7010
|
+
/** @description Sent invoices still unpaid at least a day past their due date. */
|
|
7011
|
+
overdue_count: number;
|
|
7012
|
+
/** @description How many of those are past the billing gate's overdue threshold. */
|
|
7013
|
+
escalated_count: number;
|
|
7014
|
+
};
|
|
7015
|
+
/** @description Higher shows first; the dashboard shows one at a time. */
|
|
7016
|
+
priority: number;
|
|
7017
|
+
/** @description Null when the banner can't be dismissed. */
|
|
7018
|
+
dismissal: {
|
|
7019
|
+
/** @description Stable for the fact the banner is about; a new fact (period, limit, missing scopes) makes a new key. */
|
|
7020
|
+
key: string;
|
|
7021
|
+
/** @description How long a dismissal lasts; null means until the key changes. */
|
|
7022
|
+
ttl_seconds: number | null;
|
|
7023
|
+
} | null;
|
|
7024
|
+
desktop_only: boolean;
|
|
7025
|
+
} | {
|
|
7026
|
+
/** @enum {string} */
|
|
7027
|
+
kind: "renewal_failed";
|
|
7028
|
+
params: Record<string, never>;
|
|
7029
|
+
/** @description Higher shows first; the dashboard shows one at a time. */
|
|
7030
|
+
priority: number;
|
|
7031
|
+
/** @description Null when the banner can't be dismissed. */
|
|
7032
|
+
dismissal: {
|
|
7033
|
+
/** @description Stable for the fact the banner is about; a new fact (period, limit, missing scopes) makes a new key. */
|
|
7034
|
+
key: string;
|
|
7035
|
+
/** @description How long a dismissal lasts; null means until the key changes. */
|
|
7036
|
+
ttl_seconds: number | null;
|
|
7037
|
+
} | null;
|
|
7038
|
+
desktop_only: boolean;
|
|
7039
|
+
} | {
|
|
7040
|
+
/** @enum {string} */
|
|
7041
|
+
kind: "usage_limit_reached";
|
|
7042
|
+
params: {
|
|
7043
|
+
/** @description The limit as a bill: plan price + cap. */
|
|
7044
|
+
limit_bill_cents: number;
|
|
7045
|
+
};
|
|
7046
|
+
/** @description Higher shows first; the dashboard shows one at a time. */
|
|
7047
|
+
priority: number;
|
|
7048
|
+
/** @description Null when the banner can't be dismissed. */
|
|
7049
|
+
dismissal: {
|
|
7050
|
+
/** @description Stable for the fact the banner is about; a new fact (period, limit, missing scopes) makes a new key. */
|
|
7051
|
+
key: string;
|
|
7052
|
+
/** @description How long a dismissal lasts; null means until the key changes. */
|
|
7053
|
+
ttl_seconds: number | null;
|
|
7054
|
+
} | null;
|
|
7055
|
+
desktop_only: boolean;
|
|
7056
|
+
} | {
|
|
7057
|
+
/** @enum {string} */
|
|
7058
|
+
kind: "usage_limit_warning";
|
|
7059
|
+
params: {
|
|
7060
|
+
/** @description Plan price + overage so far, as last evaluated. */
|
|
7061
|
+
bill_cents: number;
|
|
7062
|
+
/** @description The limit as a bill: plan price + cap. */
|
|
7063
|
+
limit_bill_cents: number;
|
|
7064
|
+
/** @enum {string} */
|
|
7065
|
+
period_kind: "month" | "cycle";
|
|
7066
|
+
period_start: string;
|
|
7067
|
+
/** @description Exclusive (ISO 8601). */
|
|
7068
|
+
period_end: string;
|
|
7069
|
+
};
|
|
7070
|
+
/** @description Higher shows first; the dashboard shows one at a time. */
|
|
7071
|
+
priority: number;
|
|
7072
|
+
/** @description Null when the banner can't be dismissed. */
|
|
7073
|
+
dismissal: {
|
|
7074
|
+
/** @description Stable for the fact the banner is about; a new fact (period, limit, missing scopes) makes a new key. */
|
|
7075
|
+
key: string;
|
|
7076
|
+
/** @description How long a dismissal lasts; null means until the key changes. */
|
|
7077
|
+
ttl_seconds: number | null;
|
|
7078
|
+
} | null;
|
|
7079
|
+
desktop_only: boolean;
|
|
7080
|
+
} | {
|
|
7081
|
+
/** @enum {string} */
|
|
7082
|
+
kind: "jira_reauthorization";
|
|
7083
|
+
params: {
|
|
7084
|
+
installation_id: number;
|
|
7085
|
+
};
|
|
7086
|
+
/** @description Higher shows first; the dashboard shows one at a time. */
|
|
7087
|
+
priority: number;
|
|
7088
|
+
/** @description Null when the banner can't be dismissed. */
|
|
7089
|
+
dismissal: {
|
|
7090
|
+
/** @description Stable for the fact the banner is about; a new fact (period, limit, missing scopes) makes a new key. */
|
|
7091
|
+
key: string;
|
|
7092
|
+
/** @description How long a dismissal lasts; null means until the key changes. */
|
|
7093
|
+
ttl_seconds: number | null;
|
|
7094
|
+
} | null;
|
|
7095
|
+
desktop_only: boolean;
|
|
7096
|
+
} | {
|
|
7097
|
+
/** @enum {string} */
|
|
7098
|
+
kind: "slack_permissions";
|
|
7099
|
+
params: {
|
|
7100
|
+
team_id: string;
|
|
7101
|
+
missing_scopes: string[];
|
|
7102
|
+
};
|
|
7103
|
+
/** @description Higher shows first; the dashboard shows one at a time. */
|
|
7104
|
+
priority: number;
|
|
7105
|
+
/** @description Null when the banner can't be dismissed. */
|
|
7106
|
+
dismissal: {
|
|
7107
|
+
/** @description Stable for the fact the banner is about; a new fact (period, limit, missing scopes) makes a new key. */
|
|
7108
|
+
key: string;
|
|
7109
|
+
/** @description How long a dismissal lasts; null means until the key changes. */
|
|
7110
|
+
ttl_seconds: number | null;
|
|
7111
|
+
} | null;
|
|
7112
|
+
desktop_only: boolean;
|
|
7113
|
+
} | {
|
|
7114
|
+
/** @enum {string} */
|
|
7115
|
+
kind: "no_billing_plan";
|
|
7116
|
+
params: Record<string, never>;
|
|
7117
|
+
/** @description Higher shows first; the dashboard shows one at a time. */
|
|
7118
|
+
priority: number;
|
|
7119
|
+
/** @description Null when the banner can't be dismissed. */
|
|
7120
|
+
dismissal: {
|
|
7121
|
+
/** @description Stable for the fact the banner is about; a new fact (period, limit, missing scopes) makes a new key. */
|
|
7122
|
+
key: string;
|
|
7123
|
+
/** @description How long a dismissal lasts; null means until the key changes. */
|
|
7124
|
+
ttl_seconds: number | null;
|
|
7125
|
+
} | null;
|
|
7126
|
+
desktop_only: boolean;
|
|
7127
|
+
};
|
|
6979
7128
|
ClaimRunnerBackendResponse: {
|
|
6980
7129
|
/** @description Response payload. */
|
|
6981
7130
|
data: {
|
|
@@ -9435,12 +9584,67 @@ export interface components {
|
|
|
9435
9584
|
edited: number;
|
|
9436
9585
|
deleted: number;
|
|
9437
9586
|
};
|
|
9438
|
-
|
|
9587
|
+
MemoryWriteResponse: {
|
|
9439
9588
|
/** @description Response payload. */
|
|
9440
9589
|
data: {
|
|
9441
9590
|
memory: components["schemas"]["Memory"];
|
|
9591
|
+
/** @description Memory write gate verdict for agent writes; null when the write was not classified. */
|
|
9592
|
+
gate: {
|
|
9593
|
+
/**
|
|
9594
|
+
* @description `rejected` = classified as failure/incident state; `error` = classification failed and the write was not checked.
|
|
9595
|
+
* @enum {string}
|
|
9596
|
+
*/
|
|
9597
|
+
decision: "accepted" | "rejected" | "error";
|
|
9598
|
+
/**
|
|
9599
|
+
* @description `shadow` saves regardless of the decision; `enforce` refuses rejected writes.
|
|
9600
|
+
* @enum {string}
|
|
9601
|
+
*/
|
|
9602
|
+
mode: "shadow" | "enforce";
|
|
9603
|
+
/** @description True when the write was refused. */
|
|
9604
|
+
blocked: boolean;
|
|
9605
|
+
reason: string;
|
|
9606
|
+
model: string | null;
|
|
9607
|
+
vocabulary_version: number | null;
|
|
9608
|
+
retention: string | null;
|
|
9609
|
+
retention_confidence: number | null;
|
|
9610
|
+
/** @description Probability of the failure/incident retention class; the write is rejected at or above the gate's threshold. */
|
|
9611
|
+
failure_incident_probability: number | null;
|
|
9612
|
+
subject: string | null;
|
|
9613
|
+
role: string | null;
|
|
9614
|
+
} | null;
|
|
9615
|
+
};
|
|
9616
|
+
};
|
|
9617
|
+
MemoryWriteRejectedResponse: {
|
|
9618
|
+
data: unknown;
|
|
9619
|
+
error: {
|
|
9620
|
+
/** @description Why the write was refused. */
|
|
9621
|
+
message: string;
|
|
9622
|
+
gate: components["schemas"]["MemoryWriteVerdict"];
|
|
9442
9623
|
};
|
|
9443
9624
|
};
|
|
9625
|
+
MemoryWriteVerdict: {
|
|
9626
|
+
/**
|
|
9627
|
+
* @description `rejected` = classified as failure/incident state; `error` = classification failed and the write was not checked.
|
|
9628
|
+
* @enum {string}
|
|
9629
|
+
*/
|
|
9630
|
+
decision: "accepted" | "rejected" | "error";
|
|
9631
|
+
/**
|
|
9632
|
+
* @description `shadow` saves regardless of the decision; `enforce` refuses rejected writes.
|
|
9633
|
+
* @enum {string}
|
|
9634
|
+
*/
|
|
9635
|
+
mode: "shadow" | "enforce";
|
|
9636
|
+
/** @description True when the write was refused. */
|
|
9637
|
+
blocked: boolean;
|
|
9638
|
+
reason: string;
|
|
9639
|
+
model: string | null;
|
|
9640
|
+
vocabulary_version: number | null;
|
|
9641
|
+
retention: string | null;
|
|
9642
|
+
retention_confidence: number | null;
|
|
9643
|
+
/** @description Probability of the failure/incident retention class; the write is rejected at or above the gate's threshold. */
|
|
9644
|
+
failure_incident_probability: number | null;
|
|
9645
|
+
subject: string | null;
|
|
9646
|
+
role: string | null;
|
|
9647
|
+
};
|
|
9444
9648
|
CreateMemoryRequest: {
|
|
9445
9649
|
/** @description Memory content (markdown). */
|
|
9446
9650
|
content: string;
|
|
@@ -9455,6 +9659,12 @@ export interface components {
|
|
|
9455
9659
|
/** @description Source file path for file-sourced memories; unique within the project. */
|
|
9456
9660
|
source_path?: string | null;
|
|
9457
9661
|
};
|
|
9662
|
+
MemoryResponse: {
|
|
9663
|
+
/** @description Response payload. */
|
|
9664
|
+
data: {
|
|
9665
|
+
memory: components["schemas"]["Memory"];
|
|
9666
|
+
};
|
|
9667
|
+
};
|
|
9458
9668
|
UpdateMemoryRequest: {
|
|
9459
9669
|
/** @description Memory content (markdown). */
|
|
9460
9670
|
content?: string;
|
|
@@ -9924,6 +10134,26 @@ export interface components {
|
|
|
9924
10134
|
/** @description Error message. */
|
|
9925
10135
|
error: string;
|
|
9926
10136
|
};
|
|
10137
|
+
SlackRunStartThreadReplacedError: {
|
|
10138
|
+
/** @description Error message. */
|
|
10139
|
+
error: string;
|
|
10140
|
+
/**
|
|
10141
|
+
* @description Machine-readable reason for the rejection.
|
|
10142
|
+
* @enum {string}
|
|
10143
|
+
*/
|
|
10144
|
+
code: "run_start_thread_replaced";
|
|
10145
|
+
/** @description Test run whose run-start notification was replaced. */
|
|
10146
|
+
test_run_id: string;
|
|
10147
|
+
/** @description The run's current notification thread in the same channel, or null while the final notification is still being posted. */
|
|
10148
|
+
replacement: {
|
|
10149
|
+
/** @description Slack channel ID. */
|
|
10150
|
+
channel: string;
|
|
10151
|
+
/** @description Root timestamp to reply to instead. */
|
|
10152
|
+
thread_ts: string;
|
|
10153
|
+
/** @description Registered physical Slack root ID. */
|
|
10154
|
+
slack_thread_id: number;
|
|
10155
|
+
} | null;
|
|
10156
|
+
};
|
|
9927
10157
|
SlackSupportedAction: {
|
|
9928
10158
|
/**
|
|
9929
10159
|
* @description Add a button that opens this pull request for review.
|
|
@@ -17349,6 +17579,15 @@ export interface operations {
|
|
|
17349
17579
|
"application/json": components["schemas"]["SlackMessageError"];
|
|
17350
17580
|
};
|
|
17351
17581
|
};
|
|
17582
|
+
/** @description The thread was a test run's run-start notification, which was deleted when the run's final notification was posted. Reply in `replacement` instead. */
|
|
17583
|
+
410: {
|
|
17584
|
+
headers: {
|
|
17585
|
+
[name: string]: unknown;
|
|
17586
|
+
};
|
|
17587
|
+
content: {
|
|
17588
|
+
"application/json": components["schemas"]["SlackRunStartThreadReplacedError"];
|
|
17589
|
+
};
|
|
17590
|
+
};
|
|
17352
17591
|
/** @description Slack upstream error. */
|
|
17353
17592
|
502: {
|
|
17354
17593
|
headers: {
|
|
@@ -19934,6 +20173,35 @@ export interface operations {
|
|
|
19934
20173
|
};
|
|
19935
20174
|
};
|
|
19936
20175
|
};
|
|
20176
|
+
listDashboardBanners: {
|
|
20177
|
+
parameters: {
|
|
20178
|
+
query?: never;
|
|
20179
|
+
header?: never;
|
|
20180
|
+
path?: never;
|
|
20181
|
+
cookie?: never;
|
|
20182
|
+
};
|
|
20183
|
+
requestBody?: never;
|
|
20184
|
+
responses: {
|
|
20185
|
+
/** @description Active banners. */
|
|
20186
|
+
200: {
|
|
20187
|
+
headers: {
|
|
20188
|
+
[name: string]: unknown;
|
|
20189
|
+
};
|
|
20190
|
+
content: {
|
|
20191
|
+
"application/json": components["schemas"]["DashboardBannersResponse"];
|
|
20192
|
+
};
|
|
20193
|
+
};
|
|
20194
|
+
/** @description Missing project scope. */
|
|
20195
|
+
400: {
|
|
20196
|
+
headers: {
|
|
20197
|
+
[name: string]: unknown;
|
|
20198
|
+
};
|
|
20199
|
+
content: {
|
|
20200
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
20201
|
+
};
|
|
20202
|
+
};
|
|
20203
|
+
};
|
|
20204
|
+
};
|
|
19937
20205
|
getBillingMonthSummary: {
|
|
19938
20206
|
parameters: {
|
|
19939
20207
|
query?: {
|
|
@@ -21040,7 +21308,7 @@ export interface operations {
|
|
|
21040
21308
|
"application/json": {
|
|
21041
21309
|
message: string;
|
|
21042
21310
|
/** @enum {string} */
|
|
21043
|
-
send_action: "steer" | "follow_up"
|
|
21311
|
+
send_action: "steer" | "follow_up";
|
|
21044
21312
|
created_by?: string | null;
|
|
21045
21313
|
rpc_command_id?: string;
|
|
21046
21314
|
/** @description When the caller is an agent session, wake it the next time this session waits for input (one-shot). Defaults to true; pass false for a fire-and-forget message. Ignored for other callers. */
|
|
@@ -25333,7 +25601,7 @@ export interface operations {
|
|
|
25333
25601
|
[name: string]: unknown;
|
|
25334
25602
|
};
|
|
25335
25603
|
content: {
|
|
25336
|
-
"application/json": components["schemas"]["
|
|
25604
|
+
"application/json": components["schemas"]["MemoryWriteResponse"];
|
|
25337
25605
|
};
|
|
25338
25606
|
};
|
|
25339
25607
|
/** @description Invalid request or missing project scope. */
|
|
@@ -25363,6 +25631,15 @@ export interface operations {
|
|
|
25363
25631
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
25364
25632
|
};
|
|
25365
25633
|
};
|
|
25634
|
+
/** @description Refused by the memory write gate: classified as failure/incident state. */
|
|
25635
|
+
422: {
|
|
25636
|
+
headers: {
|
|
25637
|
+
[name: string]: unknown;
|
|
25638
|
+
};
|
|
25639
|
+
content: {
|
|
25640
|
+
"application/json": components["schemas"]["MemoryWriteRejectedResponse"];
|
|
25641
|
+
};
|
|
25642
|
+
};
|
|
25366
25643
|
};
|
|
25367
25644
|
};
|
|
25368
25645
|
getMemory: {
|
|
@@ -25451,7 +25728,7 @@ export interface operations {
|
|
|
25451
25728
|
[name: string]: unknown;
|
|
25452
25729
|
};
|
|
25453
25730
|
content: {
|
|
25454
|
-
"application/json": components["schemas"]["
|
|
25731
|
+
"application/json": components["schemas"]["MemoryWriteResponse"];
|
|
25455
25732
|
};
|
|
25456
25733
|
};
|
|
25457
25734
|
/** @description Memory not found or not accessible. */
|
|
@@ -25463,6 +25740,15 @@ export interface operations {
|
|
|
25463
25740
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
25464
25741
|
};
|
|
25465
25742
|
};
|
|
25743
|
+
/** @description Refused by the memory write gate: classified as failure/incident state. */
|
|
25744
|
+
422: {
|
|
25745
|
+
headers: {
|
|
25746
|
+
[name: string]: unknown;
|
|
25747
|
+
};
|
|
25748
|
+
content: {
|
|
25749
|
+
"application/json": components["schemas"]["MemoryWriteRejectedResponse"];
|
|
25750
|
+
};
|
|
25751
|
+
};
|
|
25466
25752
|
};
|
|
25467
25753
|
};
|
|
25468
25754
|
listMemoryVersions: {
|