Take a screenshot of the recipient picker
The site says you can pick recipients by reading the address books rather than remembering a name. It had no picture of that, and a claim nobody can see is a claim nobody believes. Taken from the composer step, where a composer is already open. The obvious place was a step of its own later in the run, and that failed: navigating back to the mail list after the run has been through Files does not reliably render rows within any wait I was willing to give it. Worth knowing rather than rediscovering -- the earlier inbox step goes to the same route and is fine, so it is the state left behind, not the route. The shot ticks two people before firing, since a picker photographed empty shows a list rather than a choice. The filters step still times out waiting for its editor, as it did before this change. Everything up to it is written; filters.jpg is whatever the last successful run left. Still undiagnosed, and still not this.
@@ -203,6 +203,26 @@ try {
|
|||||||
})()`);
|
})()`);
|
||||||
await sleep(1800);
|
await sleep(1800);
|
||||||
await shot("compose.jpg");
|
await shot("compose.jpg");
|
||||||
|
|
||||||
|
// The recipient picker, taken here because the composer is already open. The
|
||||||
|
// site claims you can pick recipients by reading the address books rather
|
||||||
|
// than remembering a name, and this is that claim photographed. Doing it from
|
||||||
|
// a later step meant navigating back to the mail list, which turned out not
|
||||||
|
// to be reliable once the run had been through Files.
|
||||||
|
await evaluate(`(() => {
|
||||||
|
const b = [...document.querySelectorAll('button')].find(x => x.getAttribute('aria-label') === 'Choose from address books');
|
||||||
|
if (b) b.click();
|
||||||
|
})()`);
|
||||||
|
await waitFor("/Choose recipients/.test(document.body.innerText)", "the recipient picker");
|
||||||
|
await evaluate(`(() => {
|
||||||
|
// Two ticked, so the shot shows a selection rather than an empty list.
|
||||||
|
for (const b of [...document.querySelectorAll('.menu-item input[type=checkbox]')].slice(0, 2)) b.click();
|
||||||
|
})()`);
|
||||||
|
await sleep(1500);
|
||||||
|
await shot("recipients.jpg");
|
||||||
|
await evaluate(`(() => { const c = [...document.querySelectorAll('button')].find(b => b.textContent.trim() === 'Cancel'); if (c) c.click(); })()`);
|
||||||
|
await sleep(600);
|
||||||
|
|
||||||
await evaluate(`(() => { const c = [...document.querySelectorAll('button')].find(b => /close|discard/i.test(b.getAttribute('aria-label')||'')); if (c) c.click(); })()`);
|
await evaluate(`(() => { const c = [...document.querySelectorAll('button')].find(b => /close|discard/i.test(b.getAttribute('aria-label')||'')); if (c) c.click(); })()`);
|
||||||
await sleep(800);
|
await sleep(800);
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 59 KiB |