diff --git a/src/e2e/app.ts b/src/e2e/app.ts new file mode 100644 index 000000000..3fcfb4f99 --- /dev/null +++ b/src/e2e/app.ts @@ -0,0 +1,35 @@ +import puppeteer, { Page } from "puppeteer"; +import "pptr-testing-library/extend"; + +export class App { + private page: Promise; + + constructor() { + this.page = (async () => { + const browser = await puppeteer.launch(); + const page = await browser.newPage(); + const client = await page.target().createCDPSession(); + await client.send("Page.setDownloadBehavior", { + behavior: "allow", + downloadPath: "/tmp", + }); + return page; + })(); + } + + async download() { + const page = await this.page; + const document = await page.getDocument(); + const downloadButton = await document.getByText("Download"); + await downloadButton.click(); + } + + async reload() { + const page = await this.page; + await page.goto("http://localhost:3000"); + } + + async dispose() { + return (await this.page).browser().close(); + } +} diff --git a/src/e2e/basic.test.ts b/src/e2e/basic.test.ts index 574665c36..fca936a79 100644 --- a/src/e2e/basic.test.ts +++ b/src/e2e/basic.test.ts @@ -1,23 +1,12 @@ -import puppeteer from "puppeteer"; -import "pptr-testing-library/extend"; +import { App } from "./app"; describe("Toolbar actions", () => { - it("Download - downloads a HEX file", async () => { - const browser = await puppeteer.launch(); + const app = new App(); - const page = await browser.newPage(); - await page.goto("http://localhost:3000"); - const client = await page.target().createCDPSession(); - await client.send("Page.setDownloadBehavior", { - behavior: "allow", - downloadPath: "/tmp", - }); + beforeAll(app.reload.bind(app)); + afterAll(app.dispose.bind(app)); - const document = await page.getDocument(); - const downloadButton = await document.getByText("Download"); - await downloadButton.click(); - // TODO: wait for download, check file - - browser.close(); + it("Download - download the default HEX file", async () => { + await app.download(); }); });