Everything written this session that has not been through the device: rounds 43 to 48 (each patch adversarially verified, 43's transient-notice expectation fixed), a partial round 49, the pipeline scripts, the Android Auto design and the icon comparison mock. Also the two harness changes that were never A/B'd — adaptive waits, which may only shorten a declared wait and never lengthen it, and a ship that runs the mock walk and the deploy at the same time. The A/B and its 255-step baseline are in handoff/tools; main stays at what the phone has actually walked.
14 lines
1.2 KiB
Plaintext
14 lines
1.2 KiB
Plaintext
/* pasted TRACK links: the paste door reads each one off its own page —
|
|
the wait line names the door, the warning counts the links */
|
|
{ do: `__click('.newpl', 'Import')`, wait: 700 },
|
|
{ do: `__click('.halfsheet .row', 'Paste a tracklist')`, wait: 700 },
|
|
{ do: `(function () { var i = document.querySelector('.halfsheet .prompt .field'); i.value = 'https://open.spotify.com/track/aaaaaaaaaaaaaaaaaaaaaa\\nhttps://open.spotify.com/track/bbbbbbbbbbbbbbbbbbbbbb\\nhttps://open.spotify.com/track/cccccccccccccccccccccc'; i.dispatchEvent(new Event('input', { bubbles: true })); })()`, wait: 300 },
|
|
{ do: `__click('.halfsheet .prompt-acts .btn-fill', 'Import')`, name: "import-links-wait", wait: 500 },
|
|
{ name: "import-links-review", wait: 2600 },
|
|
{ do: `__click('.imp-foot .btn-ghost', null)`, wait: 900 },
|
|
/* the folder door: the phone's own folder picker, then the backend's walk */
|
|
{ do: `__click('.newpl', 'Import')`, wait: 700 },
|
|
{ do: `__click('.halfsheet .row', 'Folder of audio files')`, name: "import-folder-review", wait: 2200 },
|
|
{ do: `__click('.imp-foot .btn-fill', 'Create playlist')`, name: "import-folder-created", wait: 1500 },
|
|
{ do: `history.back()`, wait: 900 },
|