Skip to content

Commit

Permalink
tests: hello world playground run with success and failure tests
Browse files Browse the repository at this point in the history
  • Loading branch information
michael-kerscher committed Dec 13, 2024
1 parent de8ae4f commit 26193cb
Showing 1 changed file with 58 additions and 0 deletions.
58 changes: 58 additions & 0 deletions tests/src/playground.test.ts
Original file line number Diff line number Diff line change
@@ -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("/types-and-values/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("Hello 🌍!");
});

it("shows error messages in stderr if the code is broken", async () => {
await browser.url("/types-and-values/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");
});
});

0 comments on commit 26193cb

Please sign in to comment.