From a567ce92b79789174a816d1d73fb8a8fd2b7d16b Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Wed, 19 Feb 2020 20:37:55 -0800 Subject: [PATCH] Try to make Internet Archive integration tests more robust --- experiments/archive-org-integration-tests/index.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/experiments/archive-org-integration-tests/index.js b/experiments/archive-org-integration-tests/index.js index 1faa9ba6..14c9d56a 100755 --- a/experiments/archive-org-integration-tests/index.js +++ b/experiments/archive-org-integration-tests/index.js @@ -13,7 +13,7 @@ const TIMEOUT = 10000; async function expectSelector(page, selector) { log(`Waiting for selector ${selector}...`); - await page.waitForSelector(selector, { timeout: TIMEOUT }); + await page.waitForSelector(selector, { visible: true, timeout: TIMEOUT }); log(`Found selector ✅`); } @@ -25,7 +25,15 @@ async function testPage({ url, name, firstTrackText }) { await page.goto(url); await expectSelector(page, webampButtonSelector); log("Going to click the Webamp button"); - await page.click(webampButtonSelector, { timeout: TIMEOUT }); + // For some reason `page.click` often fails with `Error: Node is either not + // visible or not an HTMLElement` so we use `page.evaluate` instead. + // https://stackoverflow.com/a/52336777 + // await page.click(webampButtonSelector, { timeout: TIMEOUT }); + await page.evaluate(() => { + document + .querySelector(".js-webamp-use_skin_for_audio_items, .webamp-link") + .click(); + }); await expectSelector(page, "#webamp #main-window"); log("Looking for first track..."); const firstTrack = await page.$(".track-cell.current");