@rehearsal-labs/retest 0.1.0 → 0.2.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.
Files changed (315) hide show
  1. package/README.md +6 -0
  2. package/dist/agent/session.d.ts +21 -2
  3. package/dist/agent/session.d.ts.map +1 -1
  4. package/dist/agent/session.js +73 -11
  5. package/dist/api/app-page.d.ts +39 -3
  6. package/dist/api/app-page.d.ts.map +1 -1
  7. package/dist/api/app-page.js +108 -0
  8. package/dist/api/dialog.d.ts +38 -0
  9. package/dist/api/dialog.d.ts.map +1 -0
  10. package/dist/api/dialog.js +78 -0
  11. package/dist/api/drag.d.ts +32 -0
  12. package/dist/api/drag.d.ts.map +1 -0
  13. package/dist/api/drag.js +26 -0
  14. package/dist/api/files.d.ts +49 -0
  15. package/dist/api/files.d.ts.map +1 -0
  16. package/dist/api/files.js +168 -0
  17. package/dist/api/inbox.d.ts +97 -0
  18. package/dist/api/inbox.d.ts.map +1 -0
  19. package/dist/api/inbox.js +191 -0
  20. package/dist/api/locator-recipes.d.ts +1 -1
  21. package/dist/api/locator-recipes.d.ts.map +1 -1
  22. package/dist/api/locator-recipes.js +4 -3
  23. package/dist/api/page.d.ts +214 -4
  24. package/dist/api/page.d.ts.map +1 -1
  25. package/dist/api/route.d.ts +21 -0
  26. package/dist/api/route.d.ts.map +1 -0
  27. package/dist/api/route.js +99 -0
  28. package/dist/api/test-run.d.ts +127 -1
  29. package/dist/api/test-run.d.ts.map +1 -1
  30. package/dist/api/test-run.js +293 -0
  31. package/dist/assertions/expect.d.ts +91 -2
  32. package/dist/assertions/expect.d.ts.map +1 -1
  33. package/dist/assertions/expect.js +98 -0
  34. package/dist/assertions/look-until.d.ts +5 -0
  35. package/dist/assertions/look-until.d.ts.map +1 -1
  36. package/dist/assertions/look-until.js +1 -1
  37. package/dist/assertions/poll-layout.d.ts +24 -0
  38. package/dist/assertions/poll-layout.d.ts.map +1 -0
  39. package/dist/assertions/poll-layout.js +63 -0
  40. package/dist/assertions/screenshot.d.ts +36 -0
  41. package/dist/assertions/screenshot.d.ts.map +1 -0
  42. package/dist/assertions/screenshot.js +125 -0
  43. package/dist/browser/accessibility.d.ts.map +1 -1
  44. package/dist/browser/accessibility.js +22 -1
  45. package/dist/browser/actionability.d.ts +9 -6
  46. package/dist/browser/actionability.d.ts.map +1 -1
  47. package/dist/browser/actionability.js +17 -8
  48. package/dist/browser/browser.d.ts.map +1 -1
  49. package/dist/browser/browser.js +15 -4
  50. package/dist/browser/cdp/connection.d.ts +6 -0
  51. package/dist/browser/cdp/connection.d.ts.map +1 -1
  52. package/dist/browser/cdp/connection.js +8 -0
  53. package/dist/browser/checked-state.d.ts +2 -2
  54. package/dist/browser/checked-state.d.ts.map +1 -1
  55. package/dist/browser/chromium-process.d.ts +9 -2
  56. package/dist/browser/chromium-process.d.ts.map +1 -1
  57. package/dist/browser/chromium-process.js +17 -4
  58. package/dist/browser/contract.d.ts +119 -5
  59. package/dist/browser/contract.d.ts.map +1 -1
  60. package/dist/browser/dialogs.d.ts +157 -0
  61. package/dist/browser/dialogs.d.ts.map +1 -0
  62. package/dist/browser/dialogs.js +271 -0
  63. package/dist/browser/downloads.d.ts +71 -0
  64. package/dist/browser/downloads.d.ts.map +1 -0
  65. package/dist/browser/downloads.js +253 -0
  66. package/dist/browser/drag.d.ts +50 -0
  67. package/dist/browser/drag.d.ts.map +1 -0
  68. package/dist/browser/drag.js +584 -0
  69. package/dist/browser/electron-window-watch.d.ts +32 -0
  70. package/dist/browser/electron-window-watch.d.ts.map +1 -0
  71. package/dist/browser/electron-window-watch.js +93 -0
  72. package/dist/browser/electron.d.ts +13 -2
  73. package/dist/browser/electron.d.ts.map +1 -1
  74. package/dist/browser/electron.js +53 -8
  75. package/dist/browser/element-queries.d.ts +51 -15
  76. package/dist/browser/element-queries.d.ts.map +1 -1
  77. package/dist/browser/element-queries.js +92 -13
  78. package/dist/browser/emulation.d.ts.map +1 -1
  79. package/dist/browser/emulation.js +7 -5
  80. package/dist/browser/file-chooser.d.ts +75 -0
  81. package/dist/browser/file-chooser.d.ts.map +1 -0
  82. package/dist/browser/file-chooser.js +449 -0
  83. package/dist/browser/firefox/input.d.ts +5 -0
  84. package/dist/browser/firefox/input.d.ts.map +1 -1
  85. package/dist/browser/firefox/input.js +6 -3
  86. package/dist/browser/firefox/page.d.ts +11 -1
  87. package/dist/browser/firefox/page.d.ts.map +1 -1
  88. package/dist/browser/firefox/page.js +66 -7
  89. package/dist/browser/frames.d.ts +205 -0
  90. package/dist/browser/frames.d.ts.map +1 -0
  91. package/dist/browser/frames.js +657 -0
  92. package/dist/browser/input-guard.d.ts +18 -5
  93. package/dist/browser/input-guard.d.ts.map +1 -1
  94. package/dist/browser/input-guard.js +65 -6
  95. package/dist/browser/isolated-world.d.ts +8 -1
  96. package/dist/browser/isolated-world.d.ts.map +1 -1
  97. package/dist/browser/layout.d.ts +120 -0
  98. package/dist/browser/layout.d.ts.map +1 -0
  99. package/dist/browser/layout.js +213 -0
  100. package/dist/browser/locate.d.ts +10 -0
  101. package/dist/browser/locate.d.ts.map +1 -1
  102. package/dist/browser/locate.js +24 -6
  103. package/dist/browser/origin-document.d.ts +4 -0
  104. package/dist/browser/origin-document.d.ts.map +1 -1
  105. package/dist/browser/origin-document.js +9 -1
  106. package/dist/browser/page-scripts.d.ts +48 -0
  107. package/dist/browser/page-scripts.d.ts.map +1 -1
  108. package/dist/browser/page-scripts.js +515 -39
  109. package/dist/browser/page.d.ts +60 -1
  110. package/dist/browser/page.d.ts.map +1 -1
  111. package/dist/browser/page.js +275 -32
  112. package/dist/browser/popups.d.ts +166 -0
  113. package/dist/browser/popups.d.ts.map +1 -0
  114. package/dist/browser/popups.js +317 -0
  115. package/dist/browser/routes.d.ts +97 -0
  116. package/dist/browser/routes.d.ts.map +1 -0
  117. package/dist/browser/routes.js +226 -0
  118. package/dist/browser/screenshot.d.ts +44 -0
  119. package/dist/browser/screenshot.d.ts.map +1 -0
  120. package/dist/browser/screenshot.js +51 -0
  121. package/dist/browser/shadow-candidates.d.ts +20 -0
  122. package/dist/browser/shadow-candidates.d.ts.map +1 -0
  123. package/dist/browser/shadow-candidates.js +77 -0
  124. package/dist/browser/webkit/page.d.ts +11 -1
  125. package/dist/browser/webkit/page.d.ts.map +1 -1
  126. package/dist/browser/webkit/page.js +53 -2
  127. package/dist/browser/webkit/relay.d.ts.map +1 -1
  128. package/dist/browser/webkit/relay.js +5 -1
  129. package/dist/cli/commands/run.d.ts.map +1 -1
  130. package/dist/cli/commands/run.js +2 -0
  131. package/dist/cli/inspect/test-timeline.d.ts.map +1 -1
  132. package/dist/cli/inspect/test-timeline.js +38 -4
  133. package/dist/config/loaded.d.ts +12 -2
  134. package/dist/config/loaded.d.ts.map +1 -1
  135. package/dist/config/read-inboxes.d.ts +10 -0
  136. package/dist/config/read-inboxes.d.ts.map +1 -0
  137. package/dist/config/read-inboxes.js +78 -0
  138. package/dist/config/register.d.ts +5 -1
  139. package/dist/config/register.d.ts.map +1 -1
  140. package/dist/config/types.d.ts +36 -0
  141. package/dist/config/types.d.ts.map +1 -1
  142. package/dist/config/validate.d.ts.map +1 -1
  143. package/dist/config/validate.js +4 -1
  144. package/dist/diagnostics/artifact.d.ts.map +1 -1
  145. package/dist/diagnostics/artifact.js +10 -2
  146. package/dist/diagnostics/attempt.d.ts +5 -0
  147. package/dist/diagnostics/attempt.d.ts.map +1 -1
  148. package/dist/diagnostics/attempt.js +10 -0
  149. package/dist/diagnostics/chromium-collector.d.ts +9 -1
  150. package/dist/diagnostics/chromium-collector.d.ts.map +1 -1
  151. package/dist/diagnostics/chromium-collector.js +19 -4
  152. package/dist/diagnostics/observations.d.ts +8 -0
  153. package/dist/diagnostics/observations.d.ts.map +1 -1
  154. package/dist/diagnostics/session-capture.d.ts.map +1 -1
  155. package/dist/diagnostics/session-capture.js +8 -0
  156. package/dist/index.d.ts +9 -4
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +1 -0
  159. package/dist/media/policy.d.ts +2 -2
  160. package/dist/media/policy.d.ts.map +1 -1
  161. package/dist/media/policy.js +1 -1
  162. package/dist/playwright/not-yet.d.ts.map +1 -1
  163. package/dist/playwright/not-yet.js +5 -2
  164. package/dist/protocol/commands.d.ts +122 -13
  165. package/dist/protocol/commands.d.ts.map +1 -1
  166. package/dist/protocol/commands.js +85 -6
  167. package/dist/protocol/diagnostics.d.ts +10 -0
  168. package/dist/protocol/diagnostics.d.ts.map +1 -1
  169. package/dist/protocol/diagnostics.js +5 -0
  170. package/dist/protocol/dialogs.d.ts +104 -0
  171. package/dist/protocol/dialogs.d.ts.map +1 -0
  172. package/dist/protocol/dialogs.js +101 -0
  173. package/dist/protocol/drag.d.ts +45 -0
  174. package/dist/protocol/drag.d.ts.map +1 -0
  175. package/dist/protocol/drag.js +31 -0
  176. package/dist/protocol/events.d.ts +153 -1
  177. package/dist/protocol/events.d.ts.map +1 -1
  178. package/dist/protocol/events.js +97 -0
  179. package/dist/protocol/files.d.ts +83 -0
  180. package/dist/protocol/files.d.ts.map +1 -0
  181. package/dist/protocol/files.js +68 -0
  182. package/dist/protocol/inbox.d.ts +87 -0
  183. package/dist/protocol/inbox.d.ts.map +1 -0
  184. package/dist/protocol/inbox.js +51 -0
  185. package/dist/protocol/index.d.ts +4 -1
  186. package/dist/protocol/index.d.ts.map +1 -1
  187. package/dist/protocol/layout-checks.d.ts +83 -0
  188. package/dist/protocol/layout-checks.d.ts.map +1 -0
  189. package/dist/protocol/layout-checks.js +214 -0
  190. package/dist/protocol/layout.d.ts +135 -0
  191. package/dist/protocol/layout.d.ts.map +1 -0
  192. package/dist/protocol/layout.js +124 -0
  193. package/dist/protocol/locator-checks.d.ts +19 -2
  194. package/dist/protocol/locator-checks.d.ts.map +1 -1
  195. package/dist/protocol/locator-checks.js +23 -1
  196. package/dist/protocol/locator.d.ts +55 -7
  197. package/dist/protocol/locator.d.ts.map +1 -1
  198. package/dist/protocol/locator.js +99 -18
  199. package/dist/protocol/messages.d.ts +95 -0
  200. package/dist/protocol/messages.d.ts.map +1 -1
  201. package/dist/protocol/messages.js +63 -0
  202. package/dist/protocol/popups.d.ts +43 -0
  203. package/dist/protocol/popups.d.ts.map +1 -0
  204. package/dist/protocol/popups.js +27 -0
  205. package/dist/protocol/result.d.ts +5 -0
  206. package/dist/protocol/result.d.ts.map +1 -1
  207. package/dist/protocol/result.js +1 -0
  208. package/dist/protocol/routes.d.ts +136 -0
  209. package/dist/protocol/routes.d.ts.map +1 -0
  210. package/dist/protocol/routes.js +191 -0
  211. package/dist/protocol/screenshot.d.ts +219 -0
  212. package/dist/protocol/screenshot.d.ts.map +1 -0
  213. package/dist/protocol/screenshot.js +335 -0
  214. package/dist/reporters/actions.d.ts +6 -4
  215. package/dist/reporters/actions.d.ts.map +1 -1
  216. package/dist/reporters/actions.js +24 -6
  217. package/dist/reporters/agent.d.ts.map +1 -1
  218. package/dist/reporters/agent.js +4 -2
  219. package/dist/reporters/dialogs-popups.d.ts +22 -0
  220. package/dist/reporters/dialogs-popups.d.ts.map +1 -0
  221. package/dist/reporters/dialogs-popups.js +30 -0
  222. package/dist/reporters/failure-card.d.ts +10 -1
  223. package/dist/reporters/failure-card.d.ts.map +1 -1
  224. package/dist/reporters/failure-card.js +5 -1
  225. package/dist/reporters/format.d.ts +33 -0
  226. package/dist/reporters/format.d.ts.map +1 -1
  227. package/dist/reporters/format.js +42 -0
  228. package/dist/reporters/html/comparison-view.d.ts +12 -0
  229. package/dist/reporters/html/comparison-view.d.ts.map +1 -0
  230. package/dist/reporters/html/comparison-view.js +21 -0
  231. package/dist/reporters/html/diagnostics-view.js +8 -0
  232. package/dist/reporters/html/downloads-view.d.ts +10 -0
  233. package/dist/reporters/html/downloads-view.d.ts.map +1 -0
  234. package/dist/reporters/html/downloads-view.js +29 -0
  235. package/dist/reporters/html/style.d.ts.map +1 -1
  236. package/dist/reporters/html/style.js +3 -0
  237. package/dist/reporters/html/summary-view.d.ts.map +1 -1
  238. package/dist/reporters/html/summary-view.js +3 -2
  239. package/dist/reporters/html/test-view.d.ts.map +1 -1
  240. package/dist/reporters/html/test-view.js +6 -3
  241. package/dist/reporters/html/timeline-view.d.ts.map +1 -1
  242. package/dist/reporters/html/timeline-view.js +26 -2
  243. package/dist/reporters/human-card.js +10 -0
  244. package/dist/reporters/human.d.ts.map +1 -1
  245. package/dist/reporters/human.js +3 -1
  246. package/dist/reporters/routes.d.ts +9 -0
  247. package/dist/reporters/routes.d.ts.map +1 -0
  248. package/dist/reporters/routes.js +17 -0
  249. package/dist/runner/child-program.js +10 -0
  250. package/dist/runner/contract.d.ts +5 -0
  251. package/dist/runner/contract.d.ts.map +1 -1
  252. package/dist/runner/dialogs.d.ts +71 -0
  253. package/dist/runner/dialogs.d.ts.map +1 -0
  254. package/dist/runner/dialogs.js +189 -0
  255. package/dist/runner/files.d.ts +79 -0
  256. package/dist/runner/files.d.ts.map +1 -0
  257. package/dist/runner/files.js +312 -0
  258. package/dist/runner/inbox-links.d.ts +19 -0
  259. package/dist/runner/inbox-links.d.ts.map +1 -0
  260. package/dist/runner/inbox-links.js +63 -0
  261. package/dist/runner/inbox.d.ts +87 -0
  262. package/dist/runner/inbox.d.ts.map +1 -0
  263. package/dist/runner/inbox.js +340 -0
  264. package/dist/runner/index.d.ts +2 -1
  265. package/dist/runner/index.d.ts.map +1 -1
  266. package/dist/runner/native-pool.d.ts.map +1 -1
  267. package/dist/runner/native-pool.js +2 -0
  268. package/dist/runner/observations.d.ts +15 -2
  269. package/dist/runner/observations.d.ts.map +1 -1
  270. package/dist/runner/observations.js +109 -6
  271. package/dist/runner/popups.d.ts +82 -0
  272. package/dist/runner/popups.d.ts.map +1 -0
  273. package/dist/runner/popups.js +236 -0
  274. package/dist/runner/redactor.d.ts.map +1 -1
  275. package/dist/runner/redactor.js +10 -6
  276. package/dist/runner/routes.d.ts +23 -0
  277. package/dist/runner/routes.d.ts.map +1 -0
  278. package/dist/runner/routes.js +128 -0
  279. package/dist/runner/run-media.d.ts +6 -0
  280. package/dist/runner/run-media.d.ts.map +1 -1
  281. package/dist/runner/run-media.js +21 -0
  282. package/dist/runner/run-session.d.ts.map +1 -1
  283. package/dist/runner/run-session.js +93 -8
  284. package/dist/runner/running-test.d.ts +35 -0
  285. package/dist/runner/running-test.d.ts.map +1 -1
  286. package/dist/runner/running-test.js +333 -22
  287. package/dist/runner/screenshot-baselines.d.ts +159 -0
  288. package/dist/runner/screenshot-baselines.d.ts.map +1 -0
  289. package/dist/runner/screenshot-baselines.js +357 -0
  290. package/dist/runner/secrets.d.ts +13 -0
  291. package/dist/runner/secrets.d.ts.map +1 -1
  292. package/dist/runner/secrets.js +6 -4
  293. package/dist/runner/test-pages.d.ts +3 -1
  294. package/dist/runner/test-pages.d.ts.map +1 -1
  295. package/dist/runner/test-pages.js +4 -3
  296. package/dist/schemas/event-v1.schema.json +118873 -6311
  297. package/dist/schemas/result-v1.schema.json +4 -0
  298. package/dist/shared/image-diff.d.ts +36 -0
  299. package/dist/shared/image-diff.d.ts.map +1 -0
  300. package/dist/shared/image-diff.js +242 -0
  301. package/dist/shared/metadata-process.d.ts +4 -1
  302. package/dist/shared/metadata-process.d.ts.map +1 -1
  303. package/dist/shared/metadata-process.js +51 -9
  304. package/dist/shared/png.d.ts +35 -0
  305. package/dist/shared/png.d.ts.map +1 -0
  306. package/dist/shared/png.js +251 -0
  307. package/dist/shared/process-ownership.d.ts +15 -4
  308. package/dist/shared/process-ownership.d.ts.map +1 -1
  309. package/dist/shared/process-ownership.js +123 -34
  310. package/dist/store/artifacts.d.ts +23 -2
  311. package/dist/store/artifacts.d.ts.map +1 -1
  312. package/dist/store/artifacts.js +40 -1
  313. package/dist/store/rebuild-result.d.ts.map +1 -1
  314. package/dist/store/rebuild-result.js +6 -0
  315. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"test-run.d.ts","sourceRoot":"","sources":["../../src/api/test-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-run.d.ts","sourceRoot":"","sources":["../../src/api/test-run.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { dirname, join } from 'node:path';
1
2
  import { describeCommand } from "../protocol/commands.js";
2
3
  import { Deadline, elapsedMs, smallestBudget } from "../protocol/deadline.js";
3
4
  import { failure, withAlso, withLocation } from "../protocol/failures.js";
@@ -30,6 +31,13 @@ export class TestRun {
30
31
  #failures = [];
31
32
  #answers = new Map();
32
33
  #evaluations = new Map();
34
+ #inboxReads = new Map();
35
+ // Waits for dialogs and popups and answers to dialogs, by id; a wait is answered more than once, armed then opened.
36
+ #pageWaits = new Map();
37
+ // The dialogs the test was given and has not answered yet, by id, with where it asked for each.
38
+ #dialogsOpen = new Map();
39
+ #filesRequests = new Map();
40
+ #routeChanges = new Map();
33
41
  #lanes = new CommandLanes();
34
42
  #aborted = Promise.withResolvers();
35
43
  // Work created since the last function the test ran returned; each function answers for its own.
@@ -122,6 +130,246 @@ export class TestRun {
122
130
  this.#options.send({ type: 'evaluate', testId: this.testId, attemptId: this.attemptId, id, call, ...(location === undefined ? {} : { location }), ...(stepId === undefined ? {} : { stepId }) });
123
131
  return promise;
124
132
  }
133
+ /**
134
+ * Asks the parent to read an inbox. The parent reads the mailbox, looks again until a message arrives or the read's
135
+ * time runs out, and answers with the message, its codes and links hidden; `wrap` turns that answer into what the
136
+ * test receives. The read touches no page, so it holds no app, and it starts at once. Its time is its own `timeoutMs`,
137
+ * or the assertion budget, cut to what the test has left. It changes what the next read gives, so it may not run
138
+ * inside the function `expect.poll` calls.
139
+ */
140
+ readInbox({ label, request, location, timeoutMs }, wrap) {
141
+ const work = { label, location };
142
+ const operation = this.#track('read', work);
143
+ const refusal = this.#refusal() ?? this.#whileReading(work);
144
+ if (refusal !== undefined) {
145
+ operation.reject(refusal);
146
+ return operation;
147
+ }
148
+ const id = this.#options.nextCommandId();
149
+ const stepId = currentScope()?.stepId;
150
+ this.#inboxReads.set(id, (answer) => {
151
+ if (answer.ok)
152
+ operation.resolve(wrap(answer.message));
153
+ else
154
+ operation.reject(this.fail(withLocation(answer.failure, location)));
155
+ });
156
+ const budget = this.assertionBudget(timeoutMs ?? this.timeouts.assertion);
157
+ this.#options.send({ type: 'inbox', testId: this.testId, attemptId: this.attemptId, id, request, timeoutMs: budget, ...(location === undefined ? {} : { location }), ...(stepId === undefined ? {} : { stepId }) });
158
+ return operation;
159
+ }
160
+ resolveInbox(id, answer) {
161
+ const resolve = this.#inboxReads.get(id);
162
+ if (resolve === undefined)
163
+ return;
164
+ this.#inboxReads.delete(id);
165
+ resolve(answer);
166
+ }
167
+ /**
168
+ * Asks the parent to arm an app's page for the next JavaScript dialog, runs the action once the page is armed, and
169
+ * resolves with what `wrap` makes of the dialog as soon as it opens. The action is still waiting then, since a page
170
+ * holds the input that opened a dialog until the dialog is answered; `wrap` is given the action's own promise, which
171
+ * settles once the action does. An action that fails before any dialog opened fails the wait with its own failure,
172
+ * and the parent stops waiting. A wait that sees no dialog in its time fails, unless its action failed meanwhile,
173
+ * whose failure it gives instead. The wait acts on a page, so it may not run inside the function `expect.poll` calls.
174
+ */
175
+ waitForDialog(wait, wrap) {
176
+ return this.#waitForOpening('dialog', wait, (answer, acted) => {
177
+ if (!('dialog' in answer))
178
+ throw new Error('Retest answered a wait for a dialog with a page');
179
+ this.#dialogsOpen.set(answer.dialog.id, { type: answer.dialog.type, location: wait.location });
180
+ return wrap(answer.dialog, acted);
181
+ });
182
+ }
183
+ /**
184
+ * As `waitForDialog`, for the next page the action opens: the parent hands it over as an app of its own, and the wait
185
+ * resolves with what `wrap` makes of it once the action is over too, so the next command to the page that opened it
186
+ * never meets the action still running. An action that fails fails the wait with its own failure.
187
+ */
188
+ waitForPopup(wait, wrap) {
189
+ return this.#waitForOpening('popup', wait, async (answer, acted) => {
190
+ if (!('popup' in answer))
191
+ throw new Error('Retest answered a wait for a page with a dialog');
192
+ await acted;
193
+ return wrap(answer.popup);
194
+ });
195
+ }
196
+ /**
197
+ * Asks the parent to answer a dialog the test was given, then waits for the action that opened it, so the answer's
198
+ * step ends once its action has. An answer the parent could not give fails, and an action that failed fails it too,
199
+ * with its own failure. It acts on a page, so it may not run inside the function `expect.poll` calls.
200
+ */
201
+ answerDialog({ app, dialog, accept, promptText, label, location, acted }) {
202
+ const work = { label, location };
203
+ const operation = this.#track('read', work);
204
+ const refusal = this.#refusal() ?? this.#whileReading(work);
205
+ if (refusal !== undefined) {
206
+ operation.reject(refusal);
207
+ return operation;
208
+ }
209
+ this.#dialogsOpen.delete(dialog);
210
+ const id = this.#options.nextCommandId();
211
+ const stepId = currentScope()?.stepId;
212
+ this.#pageWaits.set(id, (answer) => {
213
+ this.#pageWaits.delete(id);
214
+ if (answer.kind === 'answered')
215
+ acted.then(() => operation.resolve(), (error) => operation.reject(error));
216
+ else if (answer.kind === 'failed')
217
+ operation.reject(this.fail(withLocation(answer.failure, location)));
218
+ });
219
+ const request = { kind: 'answer', dialog, accept, ...(promptText === undefined ? {} : { promptText }) };
220
+ const timeoutMs = this.assertionBudget(this.timeouts.action);
221
+ this.#options.send({ type: 'dialog', testId: this.testId, attemptId: this.attemptId, id, app, request, timeoutMs, ...(location === undefined ? {} : { location }), ...(stepId === undefined ? {} : { stepId }) });
222
+ return operation;
223
+ }
224
+ resolveDialog(id, answer) {
225
+ this.#pageWaits.get(id)?.(answer);
226
+ }
227
+ resolvePopup(id, answer) {
228
+ this.#pageWaits.get(id)?.(answer);
229
+ }
230
+ // The wait is armed before the action runs, so the parent hands over what the action's first command opens. The
231
+ // answer to the request comes on another turn, so the action runs in the scope the test called from, as its step.
232
+ #waitForOpening(kind, { app, label, location, timeoutMs, action }, take) {
233
+ const work = { label, location };
234
+ const operation = this.#track('read', work);
235
+ const refusal = this.#refusal() ?? this.#whileReading(work);
236
+ if (refusal !== undefined) {
237
+ operation.reject(refusal);
238
+ return operation;
239
+ }
240
+ const scope = currentScope() ?? { run: this };
241
+ const id = this.#options.nextCommandId();
242
+ const sending = { app, location, stepId: scope.stepId };
243
+ let acted;
244
+ let opened = false;
245
+ const fail = (problem) => operation.reject(this.fail(withLocation(problem, location)));
246
+ this.#pageWaits.set(id, (answer) => {
247
+ if (answer.kind === 'armed') {
248
+ const running = callInScope(scope, action).then(() => undefined);
249
+ acted = running;
250
+ running.then(undefined, (error) => {
251
+ if (opened)
252
+ return;
253
+ this.#pageWaits.delete(id);
254
+ this.#sendWait(kind, this.#options.nextCommandId(), { kind: 'stop', wait: id }, 1, sending);
255
+ operation.reject(error);
256
+ });
257
+ return;
258
+ }
259
+ this.#pageWaits.delete(id);
260
+ if (answer.kind === 'opened') {
261
+ opened = true;
262
+ // The action may still be running: `take` is given its promise, so its own end is never lost.
263
+ const settled = acted ?? Promise.resolve();
264
+ Promise.resolve()
265
+ .then(() => take(answer, settled))
266
+ .then((value) => operation.resolve(value), (error) => operation.reject(error));
267
+ return;
268
+ }
269
+ if (answer.kind !== 'failed')
270
+ return;
271
+ // The action's own failure says more than a wait that saw nothing while the action ran.
272
+ if (acted === undefined)
273
+ fail(answer.failure);
274
+ else
275
+ acted.then(() => fail(answer.failure), (error) => operation.reject(error));
276
+ });
277
+ this.#sendWait(kind, id, { kind: 'wait' }, this.assertionBudget(timeoutMs ?? this.timeouts.action), sending);
278
+ return operation;
279
+ }
280
+ #sendWait(kind, id, request, timeoutMs, { app, location, stepId }) {
281
+ const scope = { testId: this.testId, attemptId: this.attemptId, id, app, timeoutMs, ...(location === undefined ? {} : { location }), ...(stepId === undefined ? {} : { stepId }) };
282
+ this.#options.send(kind === 'dialog' ? { type: 'dialog', ...scope, request } : { type: 'popup', ...scope, request });
283
+ }
284
+ /**
285
+ * Asks the parent to wait for what `request` names, runs `action` meanwhile when one is given, and resolves with what
286
+ * `wrap` makes of the parent's answer once the action is over and the parent has answered. The wait holds no app, so
287
+ * the action's own commands go as they would without it; the request goes first, so the parent is waiting before
288
+ * the action's first command arrives. An action that fails fails the wait with its own failure, and the parent lets go
289
+ * of what it armed. A wait with an action acts on a page, so it may not run inside the function `expect.poll` calls.
290
+ */
291
+ awaitFiles({ label, request, location, timeoutMs }, wrap, action) {
292
+ const work = { label, location };
293
+ const operation = this.#track('read', work);
294
+ const refusal = this.#refusal() ?? (action === undefined ? undefined : this.#whileReading(work));
295
+ if (refusal !== undefined) {
296
+ operation.reject(refusal);
297
+ return operation;
298
+ }
299
+ const id = this.#sendFiles(request, smallestBudget(timeoutMs, this.#deadline.commandTimeoutMs), location);
300
+ const answered = new Promise((resolve) => this.#filesRequests.set(id, resolve));
301
+ started(action).then(async () => {
302
+ const answer = await answered;
303
+ if (!answer.ok)
304
+ return operation.reject(this.fail(withLocation(answer.failure, location)));
305
+ try {
306
+ operation.resolve(await wrap(answer));
307
+ }
308
+ catch (error) {
309
+ operation.reject(error);
310
+ }
311
+ }, (error) => {
312
+ this.#filesRequests.delete(id);
313
+ this.#sendFiles({ kind: 'release', request: id }, 1, location);
314
+ operation.reject(error);
315
+ });
316
+ return operation;
317
+ }
318
+ resolveFiles(id, answer) {
319
+ const resolve = this.#filesRequests.get(id);
320
+ if (resolve === undefined)
321
+ return;
322
+ this.#filesRequests.delete(id);
323
+ resolve(answer);
324
+ }
325
+ /**
326
+ * Asks the parent to change an app's routes, and resolves once the page holds the change, so the test's next command
327
+ * to the page meets it. It needs the app to itself, as an action does: a request already on its way when the routes
328
+ * change could meet either. Its time is the action budget, cut to what the test has left. It changes what the page's
329
+ * requests get, so it may not run inside the function `expect.poll` calls.
330
+ */
331
+ changeRoutes({ app, label, request, location }) {
332
+ const work = { label, location };
333
+ const operation = this.#track('read', work);
334
+ const refusal = this.#refusal() ?? this.#whileReading(work) ?? this.#clash(app, work, 'action');
335
+ if (refusal !== undefined) {
336
+ operation.reject(refusal);
337
+ return operation;
338
+ }
339
+ this.#lanes.startAction(app, work);
340
+ const id = this.#options.nextCommandId();
341
+ const stepId = currentScope()?.stepId;
342
+ this.#routeChanges.set(id, (answer) => {
343
+ this.#lanes.endAction(app, work);
344
+ if (answer.ok)
345
+ operation.resolve();
346
+ else
347
+ operation.reject(this.fail(withLocation(answer.failure, location)));
348
+ });
349
+ const timeoutMs = this.assertionBudget(this.timeouts.action);
350
+ this.#options.send({ type: 'route', testId: this.testId, attemptId: this.attemptId, id, app, request, timeoutMs, ...(location === undefined ? {} : { location }), ...(stepId === undefined ? {} : { stepId }) });
351
+ return operation;
352
+ }
353
+ resolveRoute(id, answer) {
354
+ const resolve = this.#routeChanges.get(id);
355
+ if (resolve === undefined)
356
+ return;
357
+ this.#routeChanges.delete(id);
358
+ resolve(answer);
359
+ }
360
+ /**
361
+ * The folder a path a test wrote is read against, as an import's is: that of the file the call came from, or the
362
+ * test's own file when the call's place is unknown.
363
+ */
364
+ callerFolder(location) {
365
+ return dirname(join(this.#options.rootDir, location?.file ?? this.#options.file));
366
+ }
367
+ #sendFiles(request, timeoutMs, location) {
368
+ const id = this.#options.nextCommandId();
369
+ const stepId = currentScope()?.stepId;
370
+ this.#options.send({ type: 'files', testId: this.testId, attemptId: this.attemptId, id, request, timeoutMs, ...(location === undefined ? {} : { location }), ...(stepId === undefined ? {} : { stepId }) });
371
+ return id;
372
+ }
125
373
  resolveEvaluation(id, answer) {
126
374
  const resolve = this.#evaluations.get(id);
127
375
  if (resolve === undefined)
@@ -201,6 +449,27 @@ export class TestRun {
201
449
  return Promise.resolve({ ok: false, failure: refusal.failure });
202
450
  return this.#send(app, { kind: 'observePage', ...(after === undefined ? {} : { after }), check: true }, { timeoutMs, location });
203
451
  }
452
+ /**
453
+ * Measures an app's page once for a layout assertion: the elements `request` names, and their words when it asks. With
454
+ * `after`, the page first waits for its next change. The look is marked as a check's, as `observe` marks its own.
455
+ */
456
+ observeLayout(app, request, timeoutMs, location, after) {
457
+ const refusal = this.#refusal();
458
+ if (refusal !== undefined)
459
+ return Promise.resolve({ ok: false, failure: refusal.failure });
460
+ return this.#send(app, { kind: 'observeLayout', ...request, ...(after === undefined ? {} : { after }), check: true }, { timeoutMs, location });
461
+ }
462
+ /**
463
+ * Takes a picture of an app's page, or of one element, for a screenshot assertion, and learns its size and how it
464
+ * stands against its baseline; the pixels stay with the parent. `previous` names the look before it in the same check,
465
+ * whose picture this one must match to have settled. The look is marked as a check's, as `observe` marks its own.
466
+ */
467
+ observeScreenshot(app, request, previous, timeoutMs, location) {
468
+ const refusal = this.#refusal();
469
+ if (refusal !== undefined)
470
+ return Promise.resolve({ ok: false, failure: refusal.failure });
471
+ return this.#send(app, { kind: 'observeScreenshot', ...request, ...(previous === undefined ? {} : { previous }), check: true }, { timeoutMs, location });
472
+ }
204
473
  /**
205
474
  * Reads an app's page once outside any check, its address and title, as `page.url()` and `page.title()` do inside
206
475
  * `read`. No assertion follows such a look, so it is not marked as a check's.
@@ -291,6 +560,8 @@ export class TestRun {
291
560
  await yieldToEventLoop();
292
561
  if (ending.kind === 'threw')
293
562
  this.recordThrown(ending.error);
563
+ for (const problem of this.#dialogsLeftOpen(what))
564
+ this.record(problem);
294
565
  for (const problem of this.#unfinishedWork(what))
295
566
  this.record(problem);
296
567
  return ending;
@@ -400,6 +671,15 @@ export class TestRun {
400
671
  #isRecorded(error) {
401
672
  return error instanceof RetestError && this.#failures.includes(error.failure);
402
673
  }
674
+ // A dialog the test was given and never answered holds its page, and the action that opened it cannot finish.
675
+ #dialogsLeftOpen(what) {
676
+ const open = [...this.#dialogsOpen.values()];
677
+ this.#dialogsOpen.clear();
678
+ return open.map(({ type, location }) => {
679
+ const message = `The ${type} dialog page.dialog() gave on ${this.describeLine(location)} was still open when ${what} returned. Answer it with dialog.accept() or dialog.dismiss().`;
680
+ return failure('not_awaited', message, location);
681
+ });
682
+ }
403
683
  // Judges the work created since the last function returned, then forgets it.
404
684
  #unfinishedWork(what) {
405
685
  const tracked = this.#tracked;
@@ -431,10 +711,23 @@ function calledMethod(command) {
431
711
  return `keyboard.${command.operation}`;
432
712
  case 'nativeAlert':
433
713
  return `alert.${command.operation}`;
714
+ case 'setChooserFiles':
715
+ return 'setFiles';
434
716
  default:
435
717
  return command.kind;
436
718
  }
437
719
  }
720
+ // A function the test passed, started at once; what it throws as it starts is its failure, as what it rejects with is.
721
+ function started(action) {
722
+ if (action === undefined)
723
+ return Promise.resolve();
724
+ try {
725
+ return Promise.resolve(action());
726
+ }
727
+ catch (error) {
728
+ return Promise.reject(error);
729
+ }
730
+ }
438
731
  function lineOrNull(location) {
439
732
  return location === undefined ? null : formatLine(location);
440
733
  }
@@ -18,6 +18,14 @@ declare const misplaced: {
18
18
  readonly toHaveValue: "toHaveValue is for locators. Use toBe on a value.";
19
19
  readonly toHaveURL: "toHaveURL is for a page. Use toBe on a value.";
20
20
  readonly toHaveTitle: "toHaveTitle is for a page. Use toBe on a value.";
21
+ readonly toOverlap: "toOverlap is for locators. Use toBe on a value.";
22
+ readonly toOverflowViewport: "toOverflowViewport is for locators. Use toBe on a value.";
23
+ readonly toHaveClippedText: "toHaveClippedText is for locators. Use toBe on a value.";
24
+ readonly toScrollHorizontally: "toScrollHorizontally is for a page. Use toBe on a value.";
25
+ readonly layout: "Layout matchers measure a web page. A native app has no page layout to measure.";
26
+ readonly toHaveScreenshot: "toHaveScreenshot is for locators and pages. Use toEqual on a value.";
27
+ readonly screenshotNot: "toHaveScreenshot has no .not. Save a baseline of the picture you expect instead.";
28
+ readonly screenshotNative: "toHaveScreenshot compares web pages. Retest compares no picture of a native app yet.";
21
29
  readonly not: ".not is for locator and page matchers. Write the value matcher that says what you expect.";
22
30
  readonly twice: ".not is written once.";
23
31
  };
@@ -29,6 +37,18 @@ type Misplaced = typeof misplaced;
29
37
  export type AssertionOptions = {
30
38
  readonly timeout?: number | undefined;
31
39
  };
40
+ /**
41
+ * `toHaveScreenshot`'s options. `threshold` is the colour distance, from 0 to 1, above which a pixel counts as
42
+ * different: 0.2 when left out. `maxDiffPixels` is how many pixels may differ, and `maxDiffPixelRatio` what part of
43
+ * them, from 0 to 1; with both, each must hold, and with neither, no pixel may differ. `timeout` shortens the assertion
44
+ * budget for the call, in milliseconds, and never lengthens it.
45
+ */
46
+ export type ScreenshotOptions = {
47
+ readonly threshold?: number | undefined;
48
+ readonly maxDiffPixels?: number | undefined;
49
+ readonly maxDiffPixelRatio?: number | undefined;
50
+ readonly timeout?: number | undefined;
51
+ };
32
52
  /** A locator's matchers, as they are and after `.not`. Each looks at the page again until it passes or time runs out. */
33
53
  export interface LocatorMatchers {
34
54
  /**
@@ -97,8 +117,38 @@ export interface LocatorMatchers {
97
117
  readonly toContain: RetestTypeError<Misplaced['toContain']>;
98
118
  readonly toMatch: RetestTypeError<Misplaced['toMatch']>;
99
119
  }
120
+ /**
121
+ * A locator's layout matchers, as they are and after `.not`. Each names a layout problem and passes while the page
122
+ * shows it, so `.not` passes once it is gone. Each measures the page again until it passes or time runs out, needs
123
+ * exactly one element for each locator, and passes neither way while an element is not shown.
124
+ */
125
+ export interface LayoutMatchers {
126
+ /**
127
+ * Waits until exactly one element matches each locator and their visible boxes share more than 4 pixels both across
128
+ * and down. A control inside a field never overlaps it, and an element never overlaps one it holds. Negated, it
129
+ * passes once they share no more than that.
130
+ *
131
+ * @example await expect(page.getByRole('button', { name: 'Save' })).not.toOverlap(page.getByRole('link', { name: 'Help' }))
132
+ */
133
+ toOverlap(other: Locator, options?: AssertionOptions): Promise<void>;
134
+ /**
135
+ * Waits until exactly one element matches and the visible part of it ends more than 1 pixel past the right edge of
136
+ * the viewport, its width without the scrollbar. Negated, it passes once the element ends no further than that.
137
+ *
138
+ * @example await expect(page.getByTestId('price')).not.toOverflowViewport()
139
+ */
140
+ toOverflowViewport(options?: AssertionOptions): Promise<void>;
141
+ /**
142
+ * Waits until exactly one element matches and a container that hides its overflow cuts off more than 4 pixels of
143
+ * its words or the words of an element inside it. Text shortened on purpose, with an ellipsis or a line clamp, is
144
+ * not cut off. Negated, it passes once no more than that is cut off.
145
+ *
146
+ * @example await expect(page.getByRole('heading')).not.toHaveClippedText()
147
+ */
148
+ toHaveClippedText(options?: AssertionOptions): Promise<void>;
149
+ }
100
150
  /** Matchers for a locator. They look at the page again until they pass or time runs out, so await them. */
101
- export interface LocatorAssertions extends LocatorMatchers {
151
+ export interface LocatorAssertions extends LocatorMatchers, LayoutMatchers {
102
152
  /**
103
153
  * The same matchers, each passing only on a look that shows the opposite. A missing element passes only
104
154
  * `.not.toBeVisible()`, `.not.toHaveCount()` and `.not.toHaveText([...])`.
@@ -106,18 +156,36 @@ export interface LocatorAssertions extends LocatorMatchers {
106
156
  * @example await expect(page.getByRole('dialog')).not.toBeVisible()
107
157
  */
108
158
  readonly not: NegatedLocatorAssertions;
159
+ /**
160
+ * Takes pictures of the one element that matches, clipped to its box, at growing waits from 100 ms, until two in a
161
+ * row are the same and the last matches the baseline `name` beside the test file, pixel by pixel, or time runs out.
162
+ * The element must be shown and inside the viewport. No pixel may differ unless the options allow it. A missing
163
+ * baseline fails the check; run with `--update-screenshots` to write it.
164
+ *
165
+ * @example await expect(page.getByTestId('chart')).toHaveScreenshot('chart', { maxDiffPixels: 50 })
166
+ */
167
+ toHaveScreenshot(name: string, options?: ScreenshotOptions): Promise<void>;
109
168
  }
110
169
  /** A locator's matchers after `.not`. */
111
170
  export interface NativeLocatorAssertions extends LocatorMatchers {
112
171
  toBeSelected(options?: AssertionOptions): Promise<void>;
172
+ readonly toOverlap: RetestTypeError<Misplaced['layout']>;
173
+ readonly toOverflowViewport: RetestTypeError<Misplaced['layout']>;
174
+ readonly toHaveClippedText: RetestTypeError<Misplaced['layout']>;
113
175
  readonly not: NativeNegatedLocatorAssertions;
176
+ readonly toHaveScreenshot: RetestTypeError<Misplaced['screenshotNative']>;
114
177
  }
115
178
  export interface NativeNegatedLocatorAssertions extends LocatorMatchers {
116
179
  toBeSelected(options?: AssertionOptions): Promise<void>;
180
+ readonly toOverlap: RetestTypeError<Misplaced['layout']>;
181
+ readonly toOverflowViewport: RetestTypeError<Misplaced['layout']>;
182
+ readonly toHaveClippedText: RetestTypeError<Misplaced['layout']>;
117
183
  readonly not: RetestTypeError<Misplaced['twice']>;
184
+ readonly toHaveScreenshot: RetestTypeError<Misplaced['screenshotNative']>;
118
185
  }
119
- export interface NegatedLocatorAssertions extends LocatorMatchers {
186
+ export interface NegatedLocatorAssertions extends LocatorMatchers, LayoutMatchers {
120
187
  readonly not: RetestTypeError<Misplaced['twice']>;
188
+ readonly toHaveScreenshot: RetestTypeError<Misplaced['screenshotNot']>;
121
189
  }
122
190
  /** A page's matchers, as they are and after `.not`. Each looks at the page again until it passes or time runs out. */
123
191
  export interface PageMatchers {
@@ -135,6 +203,13 @@ export interface PageMatchers {
135
203
  * @example await expect(page).toHaveTitle('Tasks')
136
204
  */
137
205
  toHaveTitle(title: string | RegExp, options?: AssertionOptions): Promise<void>;
206
+ /**
207
+ * Waits until the page scrolls sideways: the document is more than 1 pixel wider than the viewport without its
208
+ * scrollbar, and the page does not hide what runs past it. Negated, it passes once the page does not.
209
+ *
210
+ * @example await expect(page).not.toScrollHorizontally()
211
+ */
212
+ toScrollHorizontally(options?: AssertionOptions): Promise<void>;
138
213
  readonly toBe: RetestTypeError<Misplaced['toBe']>;
139
214
  readonly toEqual: RetestTypeError<Misplaced['toEqual']>;
140
215
  }
@@ -146,10 +221,19 @@ export interface PageAssertions extends PageMatchers {
146
221
  * @example await expect(page).not.toHaveURL('/login')
147
222
  */
148
223
  readonly not: NegatedPageAssertions;
224
+ /**
225
+ * Takes pictures of the page's viewport, at growing waits from 100 ms, until two in a row are the same and the last
226
+ * matches the baseline `name` beside the test file, pixel by pixel, or time runs out. No pixel may differ unless the
227
+ * options allow it. A missing baseline fails the check; run with `--update-screenshots` to write it.
228
+ *
229
+ * @example await expect(page).toHaveScreenshot('dashboard')
230
+ */
231
+ toHaveScreenshot(name: string, options?: ScreenshotOptions): Promise<void>;
149
232
  }
150
233
  /** A page's matchers after `.not`. */
151
234
  export interface NegatedPageAssertions extends PageMatchers {
152
235
  readonly not: RetestTypeError<Misplaced['twice']>;
236
+ readonly toHaveScreenshot: RetestTypeError<Misplaced['screenshotNot']>;
153
237
  }
154
238
  /** Matchers that compare a value. `Result` is `void` for `expect`, and a promise for `expect.poll`. */
155
239
  export interface ValueMatchers<Actual, Result> {
@@ -193,6 +277,11 @@ export interface ValueAssertions<Actual> extends ValueMatchers<Actual, void> {
193
277
  readonly toHaveValue: RetestTypeError<Misplaced['toHaveValue']>;
194
278
  readonly toHaveURL: RetestTypeError<Misplaced['toHaveURL']>;
195
279
  readonly toHaveTitle: RetestTypeError<Misplaced['toHaveTitle']>;
280
+ readonly toOverlap: RetestTypeError<Misplaced['toOverlap']>;
281
+ readonly toOverflowViewport: RetestTypeError<Misplaced['toOverflowViewport']>;
282
+ readonly toHaveClippedText: RetestTypeError<Misplaced['toHaveClippedText']>;
283
+ readonly toScrollHorizontally: RetestTypeError<Misplaced['toScrollHorizontally']>;
284
+ readonly toHaveScreenshot: RetestTypeError<Misplaced['toHaveScreenshot']>;
196
285
  readonly not: RetestTypeError<Misplaced['not']>;
197
286
  }
198
287
  /** Matchers for `expect.poll`. Each calls the function again until its value passes, so await them. */
@@ -1 +1 @@
1
- {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../../src/assertions/expect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../../src/assertions/expect.ts"],"names":[],"mappings":"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"}