From 6e284dd4ad087b34447600058a40fcf2c4457399 Mon Sep 17 00:00:00 2001 From: Razz4780 Date: Tue, 1 Oct 2024 12:17:45 +0200 Subject: [PATCH 01/13] Log editor tabs --- changelog.d/+fixed-e2e.internal.md | 1 + src/tests/e2e.ts | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 changelog.d/+fixed-e2e.internal.md diff --git a/changelog.d/+fixed-e2e.internal.md b/changelog.d/+fixed-e2e.internal.md new file mode 100644 index 00000000..396dadad --- /dev/null +++ b/changelog.d/+fixed-e2e.internal.md @@ -0,0 +1 @@ +Fixed E2E test suite. \ No newline at end of file diff --git a/src/tests/e2e.ts b/src/tests/e2e.ts index 103ec6d0..ce357485 100644 --- a/src/tests/e2e.ts +++ b/src/tests/e2e.ts @@ -39,12 +39,14 @@ describe("mirrord sample flow test", function() { await browser.waitForWorkbench(); const ew = new EditorView(); - try { + + const openEditors = await Promise.all((await ew.getOpenTabs()).map(editor => editor.getTitle())) + console.log(`open editor tabs: ${openEditors}`) + + if (openEditors.includes('Welcome')) { await ew.closeEditor('Welcome'); - } catch (error) { - console.log("Welcome page is not displayed" + error); - // continue - Welcome page is not displayed } + await ew.openEditor('app_flask.py'); }); From 934a2183019d9ca1598a4c3861ad67fe4e7903df Mon Sep 17 00:00:00 2001 From: Razz4780 Date: Tue, 1 Oct 2024 12:25:09 +0200 Subject: [PATCH 02/13] Fixed towncrier CI --- .github/workflows/ci.yaml | 14 +++++++++----- .github/workflows/release.yaml | 6 +++--- .github/workflows/reusable_e2e.yaml | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index bfd47b00..349ccf1a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -18,18 +18,22 @@ concurrency: jobs: towncrier_check: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 + - name: Install uv + uses: astral-sh/setup-uv@v2 + - run: uv python install + - run: uv venv - name: install towncrier - run: pip install towncrier==23.11.0 + run: uv pip install towncrier==23.11.0 - name: verify newsfragment exist - run: towncrier check + run: uv run towncrier check lint: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 @@ -50,7 +54,7 @@ jobs: # We want this to run even if some of the required jobs got skipped if: always() needs: [towncrier_check, e2e, lint] - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: CI succeeded # We have to do it in the shell since if it's in the if condition diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index bfcb2084..2613ec77 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -9,7 +9,7 @@ on: jobs: release: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 @@ -42,7 +42,7 @@ jobs: release_gh: needs: [release] - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: github.event_name != 'workflow_dispatch' permissions: packages: write @@ -67,7 +67,7 @@ jobs: files: /tmp/release/** update_latest: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 needs: release_gh if: github.event_name != 'workflow_dispatch' steps: diff --git a/.github/workflows/reusable_e2e.yaml b/.github/workflows/reusable_e2e.yaml index ad8ca747..e5183416 100644 --- a/.github/workflows/reusable_e2e.yaml +++ b/.github/workflows/reusable_e2e.yaml @@ -17,7 +17,7 @@ on: jobs: vscode-e2e: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 env: CI_BUILD_PLUGIN: "true" steps: From bd0afb3f3d57b5b87ba0506686a7db32c1f790c2 Mon Sep 17 00:00:00 2001 From: Razz4780 Date: Tue, 1 Oct 2024 12:30:51 +0200 Subject: [PATCH 03/13] Changelog entry --- changelog.d/+fixed-ci.internal.md | 1 + changelog.d/+fixed-e2e.internal.md | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 changelog.d/+fixed-ci.internal.md delete mode 100644 changelog.d/+fixed-e2e.internal.md diff --git a/changelog.d/+fixed-ci.internal.md b/changelog.d/+fixed-ci.internal.md new file mode 100644 index 00000000..2e42d7a1 --- /dev/null +++ b/changelog.d/+fixed-ci.internal.md @@ -0,0 +1 @@ +Pinned worker to `ubuntu-24.04`, changed towncrier check to run inside `uv`, fixed E2E test suite. \ No newline at end of file diff --git a/changelog.d/+fixed-e2e.internal.md b/changelog.d/+fixed-e2e.internal.md deleted file mode 100644 index 396dadad..00000000 --- a/changelog.d/+fixed-e2e.internal.md +++ /dev/null @@ -1 +0,0 @@ -Fixed E2E test suite. \ No newline at end of file From 1a1bc8d4849e637b4a33eb54402bdaf1f3e13ccd Mon Sep 17 00:00:00 2001 From: Razz4780 Date: Tue, 1 Oct 2024 12:33:46 +0200 Subject: [PATCH 04/13] This may work --- src/tests/e2e.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/tests/e2e.ts b/src/tests/e2e.ts index ce357485..0b9abfd5 100644 --- a/src/tests/e2e.ts +++ b/src/tests/e2e.ts @@ -35,19 +35,19 @@ describe("mirrord sample flow test", function() { browser = VSBrowser.instance; - await browser.openResources(testWorkspace, join(testWorkspace, fileName)); await browser.waitForWorkbench(); + const ev = new EditorView(); - const ew = new EditorView(); - - const openEditors = await Promise.all((await ew.getOpenTabs()).map(editor => editor.getTitle())) + const openEditors = await Promise.all((await ev.getOpenTabs()).map(editor => editor.getTitle())) console.log(`open editor tabs: ${openEditors}`) if (openEditors.includes('Welcome')) { - await ew.closeEditor('Welcome'); + await ev.closeEditor('Welcome'); } - await ew.openEditor('app_flask.py'); + await browser.openResources(testWorkspace, join(testWorkspace, fileName)); + await browser.waitForWorkbench(); + await ev.openEditor('app_flask.py'); }); it("enable mirrord button", async function() { From 57987b13ee787657b337f059ba6e9a80853d3dd0 Mon Sep 17 00:00:00 2001 From: Razz4780 Date: Tue, 1 Oct 2024 13:06:47 +0200 Subject: [PATCH 05/13] Manually open file --- src/tests/e2e.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/tests/e2e.ts b/src/tests/e2e.ts index 0b9abfd5..76689b43 100644 --- a/src/tests/e2e.ts +++ b/src/tests/e2e.ts @@ -1,6 +1,6 @@ import { expect, assert } from "chai"; import { join } from "path"; -import { VSBrowser, StatusBar, ActivityBar, DebugView, InputBox, DebugToolbar, BottomBarPanel, EditorView } from "vscode-extension-tester"; +import { VSBrowser, StatusBar, ActivityBar, DebugView, InputBox, DebugToolbar, BottomBarPanel, EditorView, SideBarView, DefaultTreeSection } from "vscode-extension-tester"; import get from "axios"; const kubeService = process.env.KUBE_SERVICE; @@ -26,7 +26,7 @@ describe("mirrord sample flow test", function() { const fileName = "app_flask.py"; const defaultTimeout = 40000; // = 40 seconds - before(async function() { + before("open flask app in the editor", async function() { console.log("podToSelect: " + podToSelect); console.log("kubeService: " + kubeService); @@ -38,7 +38,7 @@ describe("mirrord sample flow test", function() { await browser.waitForWorkbench(); const ev = new EditorView(); - const openEditors = await Promise.all((await ev.getOpenTabs()).map(editor => editor.getTitle())) + const openEditors = await Promise.all((await ev.getOpenTabs()).map(editor => editor.getTitle())); console.log(`open editor tabs: ${openEditors}`) if (openEditors.includes('Welcome')) { @@ -47,7 +47,17 @@ describe("mirrord sample flow test", function() { await browser.openResources(testWorkspace, join(testWorkspace, fileName)); await browser.waitForWorkbench(); - await ev.openEditor('app_flask.py'); + + (await new ActivityBar().getViewControl('Explorer'))?.openView(); + const view = new SideBarView(); + const titlePart = await view.getTitlePart().getTitle(); + expect(titlePart.toLowerCase()).equals('explorer'); + const content = view.getContent(); + const tree = (await content.getSection('test-workspace')) as DefaultTreeSection; + const items = await tree.getVisibleItems(); + const labels = await Promise.all(items.map((item) => item.getLabel())); + expect(labels).contains('app_flask.py'); + await tree.openItem('app_flask.py'); }); it("enable mirrord button", async function() { From 00c9948c285c122071ffdabacd8ac9265720aad6 Mon Sep 17 00:00:00 2001 From: Razz4780 Date: Tue, 1 Oct 2024 13:18:55 +0200 Subject: [PATCH 06/13] Debug log --- src/tests/e2e.ts | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/tests/e2e.ts b/src/tests/e2e.ts index 76689b43..d17e26e5 100644 --- a/src/tests/e2e.ts +++ b/src/tests/e2e.ts @@ -34,18 +34,6 @@ describe("mirrord sample flow test", function() { expect(kubeService).to.not.be.undefined; browser = VSBrowser.instance; - - await browser.waitForWorkbench(); - const ev = new EditorView(); - - const openEditors = await Promise.all((await ev.getOpenTabs()).map(editor => editor.getTitle())); - console.log(`open editor tabs: ${openEditors}`) - - if (openEditors.includes('Welcome')) { - await ev.closeEditor('Welcome'); - } - - await browser.openResources(testWorkspace, join(testWorkspace, fileName)); await browser.waitForWorkbench(); (await new ActivityBar().getViewControl('Explorer'))?.openView(); @@ -53,7 +41,12 @@ describe("mirrord sample flow test", function() { const titlePart = await view.getTitlePart().getTitle(); expect(titlePart.toLowerCase()).equals('explorer'); const content = view.getContent(); - const tree = (await content.getSection('test-workspace')) as DefaultTreeSection; + const sections = await content.getSections() + const tree = sections.find(async section => await section.getTitle() === 'test-workspace') as DefaultTreeSection | undefined + if (tree === undefined) { + const names = await Promise.all(sections.map(section => section.getTitle())) + throw new Error(`test-workspace not found in explorer sections: ${names}`); + } const items = await tree.getVisibleItems(); const labels = await Promise.all(items.map((item) => item.getLabel())); expect(labels).contains('app_flask.py'); From 535746236fd67a4551e123fa7b3e25625058ce29 Mon Sep 17 00:00:00 2001 From: Razz4780 Date: Tue, 1 Oct 2024 14:02:14 +0200 Subject: [PATCH 07/13] Maybe works? --- src/tests/e2e.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/tests/e2e.ts b/src/tests/e2e.ts index d17e26e5..f45c744c 100644 --- a/src/tests/e2e.ts +++ b/src/tests/e2e.ts @@ -34,6 +34,7 @@ describe("mirrord sample flow test", function() { expect(kubeService).to.not.be.undefined; browser = VSBrowser.instance; + await browser.openResources(testWorkspace, join(testWorkspace, fileName)); await browser.waitForWorkbench(); (await new ActivityBar().getViewControl('Explorer'))?.openView(); @@ -42,14 +43,10 @@ describe("mirrord sample flow test", function() { expect(titlePart.toLowerCase()).equals('explorer'); const content = view.getContent(); const sections = await content.getSections() - const tree = sections.find(async section => await section.getTitle() === 'test-workspace') as DefaultTreeSection | undefined - if (tree === undefined) { - const names = await Promise.all(sections.map(section => section.getTitle())) - throw new Error(`test-workspace not found in explorer sections: ${names}`); - } + console.log(`explorer sectinos: ${await Promise.all(sections.map(section => section.getTitle()))}`) + const tree = await content.getSection('test-workspace') as DefaultTreeSection; const items = await tree.getVisibleItems(); - const labels = await Promise.all(items.map((item) => item.getLabel())); - expect(labels).contains('app_flask.py'); + console.log(`test-workspace section visible items: ${Promise.all(items.map(item => item.getLabel()))}`); await tree.openItem('app_flask.py'); }); From bfc92c5461749aeaed00b1c78cc3febefe27bea2 Mon Sep 17 00:00:00 2001 From: Razz4780 Date: Tue, 1 Oct 2024 14:52:43 +0200 Subject: [PATCH 08/13] Maybe --- src/tests/e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/e2e.ts b/src/tests/e2e.ts index f45c744c..f6a54cdf 100644 --- a/src/tests/e2e.ts +++ b/src/tests/e2e.ts @@ -34,8 +34,8 @@ describe("mirrord sample flow test", function() { expect(kubeService).to.not.be.undefined; browser = VSBrowser.instance; - await browser.openResources(testWorkspace, join(testWorkspace, fileName)); await browser.waitForWorkbench(); + await browser.openResources(testWorkspace, join(testWorkspace, fileName)); (await new ActivityBar().getViewControl('Explorer'))?.openView(); const view = new SideBarView(); From c39207e0535b87dc0fbc06d2fa1e47d9d06faff4 Mon Sep 17 00:00:00 2001 From: Razz4780 Date: Tue, 1 Oct 2024 15:02:04 +0200 Subject: [PATCH 09/13] ??? --- src/tests/e2e.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/tests/e2e.ts b/src/tests/e2e.ts index f6a54cdf..6f85774a 100644 --- a/src/tests/e2e.ts +++ b/src/tests/e2e.ts @@ -1,6 +1,6 @@ import { expect, assert } from "chai"; import { join } from "path"; -import { VSBrowser, StatusBar, ActivityBar, DebugView, InputBox, DebugToolbar, BottomBarPanel, EditorView, SideBarView, DefaultTreeSection } from "vscode-extension-tester"; +import { VSBrowser, StatusBar, ActivityBar, DebugView, InputBox, DebugToolbar, BottomBarPanel, EditorView, SideBarView, DefaultTreeSection, TitleBar } from "vscode-extension-tester"; import get from "axios"; const kubeService = process.env.KUBE_SERVICE; @@ -35,7 +35,15 @@ describe("mirrord sample flow test", function() { browser = VSBrowser.instance; await browser.waitForWorkbench(); - await browser.openResources(testWorkspace, join(testWorkspace, fileName)); + + const titleBar = new TitleBar(); + const item = await titleBar.getItem('File'); + const fileMenu = await item!.select(); + const openItem = (await fileMenu.getItems()).find(async item => (await item.getLabel()).startsWith("Open Folder...")) + await openItem!.select(); + const input = await InputBox.create(); + await input.setText(testWorkspace); + await input.confirm(); (await new ActivityBar().getViewControl('Explorer'))?.openView(); const view = new SideBarView(); From 2ffc71c5bd319953cc3685418a46e0abc3def3f4 Mon Sep 17 00:00:00 2001 From: Razz4780 Date: Tue, 1 Oct 2024 15:23:39 +0200 Subject: [PATCH 10/13] media --- src/tests/e2e.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/tests/e2e.ts b/src/tests/e2e.ts index 6f85774a..56f48a34 100644 --- a/src/tests/e2e.ts +++ b/src/tests/e2e.ts @@ -39,7 +39,7 @@ describe("mirrord sample flow test", function() { const titleBar = new TitleBar(); const item = await titleBar.getItem('File'); const fileMenu = await item!.select(); - const openItem = (await fileMenu.getItems()).find(async item => (await item.getLabel()).startsWith("Open Folder...")) + const openItem = await fileMenu.getItem("Add Folder to Workspace..."); await openItem!.select(); const input = await InputBox.create(); await input.setText(testWorkspace); @@ -51,11 +51,11 @@ describe("mirrord sample flow test", function() { expect(titlePart.toLowerCase()).equals('explorer'); const content = view.getContent(); const sections = await content.getSections() - console.log(`explorer sectinos: ${await Promise.all(sections.map(section => section.getTitle()))}`) - const tree = await content.getSection('test-workspace') as DefaultTreeSection; + console.log(`explorer sections: ${await Promise.all(sections.map(section => section.getTitle()))}`) + const tree = sections[0] as DefaultTreeSection; const items = await tree.getVisibleItems(); - console.log(`test-workspace section visible items: ${Promise.all(items.map(item => item.getLabel()))}`); - await tree.openItem('app_flask.py'); + console.log(`tree visible items: ${await Promise.all(items.map(item => item.getLabel()))}`); + await tree.openItem('test-workspace', 'app_flask.py'); }); it("enable mirrord button", async function() { From f875cb74c6f3bc0de9ce1e0b9043089e82e8b13d Mon Sep 17 00:00:00 2001 From: Razz4780 Date: Tue, 1 Oct 2024 19:09:01 +0200 Subject: [PATCH 11/13] God this works --- src/tests/e2e.ts | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/tests/e2e.ts b/src/tests/e2e.ts index 56f48a34..4e18116e 100644 --- a/src/tests/e2e.ts +++ b/src/tests/e2e.ts @@ -1,6 +1,6 @@ import { expect, assert } from "chai"; import { join } from "path"; -import { VSBrowser, StatusBar, ActivityBar, DebugView, InputBox, DebugToolbar, BottomBarPanel, EditorView, SideBarView, DefaultTreeSection, TitleBar } from "vscode-extension-tester"; +import { VSBrowser, StatusBar, ActivityBar, DebugView, InputBox, DebugToolbar, BottomBarPanel, EditorView, SideBarView, DefaultTreeSection, TitleBar, Workbench, until } from "vscode-extension-tester"; import get from "axios"; const kubeService = process.env.KUBE_SERVICE; @@ -36,26 +36,30 @@ describe("mirrord sample flow test", function() { browser = VSBrowser.instance; await browser.waitForWorkbench(); + const workbench = new Workbench(); + const titleBar = new TitleBar(); const item = await titleBar.getItem('File'); const fileMenu = await item!.select(); - const openItem = await fileMenu.getItem("Add Folder to Workspace..."); + const items = await fileMenu.getItems(); + let openItem = null; + for (const item of items) { + const label = await item.getLabel() + if (label.startsWith("Open Folder...")) { + openItem = item; + } + } await openItem!.select(); const input = await InputBox.create(); await input.setText(testWorkspace); await input.confirm(); - (await new ActivityBar().getViewControl('Explorer'))?.openView(); + await browser.driver.wait(until.stalenessOf(workbench)); + await browser.waitForWorkbench(); + const view = new SideBarView(); - const titlePart = await view.getTitlePart().getTitle(); - expect(titlePart.toLowerCase()).equals('explorer'); - const content = view.getContent(); - const sections = await content.getSections() - console.log(`explorer sections: ${await Promise.all(sections.map(section => section.getTitle()))}`) - const tree = sections[0] as DefaultTreeSection; - const items = await tree.getVisibleItems(); - console.log(`tree visible items: ${await Promise.all(items.map(item => item.getLabel()))}`); - await tree.openItem('test-workspace', 'app_flask.py'); + const tree = await view.getContent().getSection('test-workspace'); + await tree.openItem('app_flask.py'); }); it("enable mirrord button", async function() { From 6dd96a997797ef81d805404f8aaa82b771546131 Mon Sep 17 00:00:00 2001 From: Razz4780 Date: Tue, 1 Oct 2024 19:40:39 +0200 Subject: [PATCH 12/13] No flask --- .github/workflows/reusable_e2e.yaml | 3 --- src/tests/e2e.ts | 7 +++---- test-workspace/app_flask.py | 13 ------------- test-workspace/http_server.py | 16 ++++++++++++++++ 4 files changed, 19 insertions(+), 20 deletions(-) delete mode 100644 test-workspace/app_flask.py create mode 100644 test-workspace/http_server.py diff --git a/.github/workflows/reusable_e2e.yaml b/.github/workflows/reusable_e2e.yaml index e5183416..2c5711cb 100644 --- a/.github/workflows/reusable_e2e.yaml +++ b/.github/workflows/reusable_e2e.yaml @@ -97,9 +97,6 @@ jobs: - uses: actions/setup-python@v4 with: python-version: "3.10" - - name: Install dependencies - run: | - pip install flask # we can't run chrome like apps in the CI, we use a virtual frame buffer: # refer: http://elementalselenium.com/tips/38-headless - name: Run vscode e2e in headless state diff --git a/src/tests/e2e.ts b/src/tests/e2e.ts index 4e18116e..03ab52e7 100644 --- a/src/tests/e2e.ts +++ b/src/tests/e2e.ts @@ -23,10 +23,9 @@ describe("mirrord sample flow test", function() { let browser: VSBrowser; const testWorkspace = join(__dirname, '../../test-workspace'); - const fileName = "app_flask.py"; const defaultTimeout = 40000; // = 40 seconds - before("open flask app in the editor", async function() { + before("open local app in the editor", async function() { console.log("podToSelect: " + podToSelect); console.log("kubeService: " + kubeService); @@ -59,7 +58,7 @@ describe("mirrord sample flow test", function() { const view = new SideBarView(); const tree = await view.getContent().getSection('test-workspace'); - await tree.openItem('app_flask.py'); + await tree.openItem('http_server.py'); }); it("enable mirrord button", async function() { @@ -133,7 +132,7 @@ describe("mirrord sample flow test", function() { await browser.driver.wait(async () => { const text = await terminal.getText(); - return await terminal.isDisplayed() && text.includes("Press CTRL+C to quit"); + return await terminal.isDisplayed() && text.includes("Local app started"); }, 4 * defaultTimeout, "terminal text not found -- timed out"); await sendTrafficToPod(); diff --git a/test-workspace/app_flask.py b/test-workspace/app_flask.py deleted file mode 100644 index a380b4b9..00000000 --- a/test-workspace/app_flask.py +++ /dev/null @@ -1,13 +0,0 @@ -from flask import Flask - -app = Flask(__name__) - - -@app.route("/", methods=["GET"]) -def get(): - print("GET: Request completed") - return "GET" - - -if __name__ == "__main__": - app.run(host="0.0.0.0", port=80) diff --git a/test-workspace/http_server.py b/test-workspace/http_server.py new file mode 100644 index 00000000..3216a616 --- /dev/null +++ b/test-workspace/http_server.py @@ -0,0 +1,16 @@ +from http.server import BaseHTTPRequestHandler, HTTPServer + +class HTTPRequestHandler(BaseHTTPRequestHandler): + def do_GET(self): + print("GET: Request completed") + self.send_response(200) + self.send_header("Content-type", "application/json") + self.send_header("Content-Length", len("GET")) + self.end_headers() + self.wfile.write("GET".encode('utf8')) + +if __name__ == "__main__": + server_address = ('0.0.0.0', 80) + httpd = HTTPServer(server_address, HTTPRequestHandler) + print("Local app started") + httpd.serve_forever() From a9aadcff7c3fac9ea5f5175b91549119055bd743 Mon Sep 17 00:00:00 2001 From: Razz4780 Date: Wed, 2 Oct 2024 10:21:46 +0200 Subject: [PATCH 13/13] lint --- src/tests/e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/e2e.ts b/src/tests/e2e.ts index 03ab52e7..4a4a13d7 100644 --- a/src/tests/e2e.ts +++ b/src/tests/e2e.ts @@ -43,7 +43,7 @@ describe("mirrord sample flow test", function() { const items = await fileMenu.getItems(); let openItem = null; for (const item of items) { - const label = await item.getLabel() + const label = await item.getLabel(); if (label.startsWith("Open Folder...")) { openItem = item; }