123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- // @ts-check
- const { test, expect, defineConfig } = require("@playwright/test");
- test("button click", async ({ page }) => {
- await page.goto("http://localhost:9999");
- // Expect the page to contain the counter text.
- const main = page.locator("#main");
- await expect(main).toContainText("hello axum! 0");
- // Expect the title to contain the counter text.
- await expect(page).toHaveTitle("hello axum! 0");
- // Click the increment button.
- let button = page.locator("button.increment-button");
- await button.click();
- // Expect the page to contain the updated counter text.
- await expect(main).toContainText("hello axum! 1");
- // Expect the title to contain the updated counter text.
- await expect(page).toHaveTitle("hello axum! 1");
- });
- test("svg", async ({ page }) => {
- await page.goto("http://localhost:9999");
- // Expect the page to contain the svg.
- const svg = page.locator("svg");
- // Expect the svg to contain the circle.
- const circle = svg.locator("circle");
- await expect(circle).toHaveAttribute("cx", "50");
- await expect(circle).toHaveAttribute("cy", "50");
- await expect(circle).toHaveAttribute("r", "40");
- await expect(circle).toHaveAttribute("stroke", "green");
- await expect(circle).toHaveAttribute("fill", "yellow");
- });
- test("raw attribute", async ({ page }) => {
- await page.goto("http://localhost:9999");
- // Expect the page to contain the div with the raw attribute.
- const div = page.locator("div.raw-attribute-div");
- await expect(div).toHaveAttribute("raw-attribute", "raw-attribute-value");
- });
- test("hidden attribute", async ({ page }) => {
- await page.goto("http://localhost:9999");
- // Expect the page to contain the div with the hidden attribute.
- const div = page.locator("div.hidden-attribute-div");
- await expect(div).toHaveAttribute("hidden", "true");
- });
- test("dangerous inner html", async ({ page }) => {
- await page.goto("http://localhost:9999");
- // Expect the page to contain the div with the dangerous inner html.
- const div = page.locator("div.dangerous-inner-html-div");
- await expect(div).toContainText("hello dangerous inner html");
- });
- test("input value", async ({ page }) => {
- await page.goto("http://localhost:9999");
- // Expect the page to contain the input with the value.
- const input = page.locator("input");
- await expect(input).toHaveValue("hello input");
- });
- test("style", async ({ page }) => {
- await page.goto("http://localhost:9999");
- // Expect the page to contain the div with the style.
- const div = page.locator("div.style-div");
- await expect(div).toHaveText("colored text");
- await expect(div).toHaveCSS("color", "rgb(255, 0, 0)");
- });
- test("eval", async ({ page }) => {
- await page.goto("http://localhost:9999");
- // Expect the page to contain the div with the eval and have no text.
- const div = page.locator("div.eval-result");
- await expect(div).toHaveText("");
- // Click the button to run the eval.
- let button = page.locator("button.eval-button");
- await button.click();
- // Check that the title changed.
- await expect(page).toHaveTitle("Hello from Dioxus Eval!");
- // Check that the div has the eval value.
- await expect(div).toHaveText("returned eval value");
- });
- test("prevent default", async ({ page }) => {
- await page.goto("http://localhost:9999");
- // Expect the page to contain the div with the eval and have no text.
- const a = page.locator("a.prevent-default");
- await expect(a).toHaveText("View source");
- // Click the <a> element to change the text
- await a.click();
- // Check that the <a> element changed.
- await expect(a).toHaveText("Psych!");
- });
- test("onmounted", async ({ page }) => {
- await page.goto("http://localhost:9999");
- // Expect the onmounted event to be called exactly once.
- const mountedDiv = page.locator("div.onmounted-div");
- await expect(mountedDiv).toHaveText("onmounted was called 1 times");
- });
- test("web-sys closure", async ({ page }) => {
- await page.goto("http://localhost:9999");
- // wait until the div is mounted
- const scrollDiv = page.locator("div#web-sys-closure-div");
- await scrollDiv.waitFor({ state: "attached" });
- await page.keyboard.press("Enter");
- await expect(scrollDiv).toHaveText("the keydown event was triggered");
- });
- test("document elements", async ({ page }) => {
- await page.goto("http://localhost:9999");
- // wait until the meta element is mounted
- const meta = page.locator("meta#meta-head[name='testing']");
- await meta.waitFor({ state: "attached" });
- await expect(meta).toHaveAttribute("data", "dioxus-meta-element");
- const link = page.locator("link#link-head[rel='stylesheet']");
- await link.waitFor({ state: "attached" });
- await expect(link).toHaveAttribute(
- "href",
- "https://fonts.googleapis.com/css?family=Roboto+Mono"
- );
- const stylesheet = page.locator("link#stylesheet-head[rel='stylesheet']");
- await stylesheet.waitFor({ state: "attached" });
- await expect(stylesheet).toHaveAttribute(
- "href",
- "https://fonts.googleapis.com/css?family=Roboto:300,300italic,700,700italic"
- );
- const script = page.locator("script#script-head");
- await script.waitFor({ state: "attached" });
- await expect(script).toHaveAttribute("async", "true");
- const style = page.locator("style#style-head");
- await style.waitFor({ state: "attached" });
- const main = page.locator("#main");
- await expect(main).toHaveCSS("font-family", "Roboto");
- });
|