diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 54298b12..4fcf4a14 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -60,9 +60,7 @@ jobs: name: Logfiles path: | ./e2e_tests/bobtimus.log - ./e2e_tests/liquid.log - ./e2e_tests/electrs.log - ./e2e_tests/esplora.log + ./e2e_tests/screenshots build_test_workspace: strategy: diff --git a/e2e_tests/.gitignore b/e2e_tests/.gitignore index 2fbdc649..bf57cb64 100644 --- a/e2e_tests/.gitignore +++ b/e2e_tests/.gitignore @@ -2,3 +2,5 @@ node_modules /nigiri/config/regtest/ /nigiri/liquid-config/liquidregtest/ +screenshots/* +!screenshots/.gitkeep diff --git a/e2e_tests/screenshots/.gitkeep b/e2e_tests/screenshots/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/e2e_tests/src/utils.ts b/e2e_tests/src/utils.ts index 048b802d..08706ffb 100644 --- a/e2e_tests/src/utils.ts +++ b/e2e_tests/src/utils.ts @@ -1,4 +1,5 @@ import Debug from "debug"; +import { promises as fsp } from "fs"; import fetch from "node-fetch"; import { Builder, By, until, WebDriver } from "selenium-webdriver"; import { Driver } from "selenium-webdriver/firefox"; @@ -7,8 +8,14 @@ const firefox = require("selenium-webdriver/firefox"); const firefoxPath = require("geckodriver").path; const getElementById = async (driver, xpath, timeout = 4000) => { - const el = await driver.wait(until.elementLocated(By.xpath(xpath)), timeout); - return await driver.wait(until.elementIsVisible(el), timeout); + try { + const el = await driver.wait(until.elementLocated(By.xpath(xpath)), timeout); + return await driver.wait(until.elementIsVisible(el), timeout); + } catch (e) { + const filename = xpath.replace(/[^\w\s]/gi, ""); + await takeScreenshot(driver, `./screenshots/error-${filename}.png`); + throw e; + } }; const setupBrowserWithExtension = async (webAppUrl: string) => { @@ -112,4 +119,9 @@ async function switchToWindow(driver: WebDriver, name: string) { await driver.switchTo().window(await getWindowHandle(driver, name)); } +async function takeScreenshot(driver, file) { + let image = await driver.takeScreenshot(); + await fsp.writeFile(file, image, "base64"); +} + export { faucet, getElementById, setupBrowserWithExtension, setupTestingWallet, switchToWindow, unlockWallet };