From 2992180ca0ee41726993c36e7ad9f1e6f2c763e3 Mon Sep 17 00:00:00 2001 From: Michael Kerscher Date: Fri, 13 Dec 2024 13:32:55 +0100 Subject: [PATCH] tests: hello world playground run with success and failure tests --- tests/src/playground.test.ts | 58 ++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 tests/src/playground.test.ts diff --git a/tests/src/playground.test.ts b/tests/src/playground.test.ts new file mode 100644 index 000000000000..fcc34f21d317 --- /dev/null +++ b/tests/src/playground.test.ts @@ -0,0 +1,58 @@ +import { describe, it } from "mocha"; +import { $, expect, browser } from "@wdio/globals"; + +describe("Playground", () => { + it("executes the hello world code and prints the hello message", async () => { + await browser.url("/hello-world/hello-world.html"); + const playground_area = $(".ace_content"); + const playground_start_button = $("button.play-button"); + const playground_stderr = $("code.result.stderr"); + const playground_stdout = $("code.result.stdout"); + + // ensure a playground exists and pre-state is as expected + await expect(playground_area).toExist(); + await expect(playground_start_button).toExist(); + await expect(playground_start_button).not.toBeDisplayed(); + await expect(playground_stderr).not.toExist(); + await expect(playground_stdout).not.toExist(); + + // clicking into the content is necessary for the button to be displayed + await playground_area.click(); + await expect(playground_start_button).toBeDisplayed(); + + // clicking the button triggers action + await playground_start_button.click(); + await expect(playground_stdout).toBeDisplayed(); + await expect(playground_stderr).not.toBeDisplayed(); + await expect(playground_stdout).toHaveText(expect.stringContaining("🌍")); + }); + + it("shows error messages in stderr if the code is broken", async () => { + await browser.url("/hello-world/hello-world.html"); + const playground_area = $(".ace_content"); + const playground_start_button = $("button.play-button"); + const playground_stderr = $("code.result.stderr"); + const playground_stdout = $("code.result.stdout"); + + // overwrite the playground code with expected broken code + await browser.execute(() => { + window.ace + .edit(document.querySelector("code")) + .setValue("fn expect_failure()"); + }); + + // clicking into the content is necessary for the button to be displayed + await playground_area.click(); + + // clicking the button triggers action + await playground_start_button.click(); + await expect(playground_stdout).toBeDisplayed(); + await expect(playground_stderr).toBeDisplayed(); + + // check for error message in stderr + await expect(playground_stderr).toHaveText( + expect.stringContaining("error: could not compile") + ); + await expect(playground_stdout).toHaveText("No output"); + }); +});