|
@@ -0,0 +1,94 @@
|
|
|
|
+// @ts-check
|
|
|
|
+const { test, expect, defineConfig } = require('@playwright/test');
|
|
|
|
+
|
|
|
|
+test('button click', async ({ page }) => {
|
|
|
|
+ await page.goto('http://localhost:8080');
|
|
|
|
+
|
|
|
|
+ // Expect the page to contain the counter text.
|
|
|
|
+ const main = page.locator('#main');
|
|
|
|
+ await expect(main).toContainText('hello axum! 0');
|
|
|
|
+
|
|
|
|
+ // Click the increment button.
|
|
|
|
+ let button = await page.locator('button.increment-button');
|
|
|
|
+ await button.click();
|
|
|
|
+
|
|
|
|
+ // Expect the page to contain the updated counter text.
|
|
|
|
+ await expect(main).toContainText('hello axum! 1');
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+test('svg', async ({ page }) => {
|
|
|
|
+ await page.goto('http://localhost:8080');
|
|
|
|
+
|
|
|
|
+ // 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:8080');
|
|
|
|
+
|
|
|
|
+ // 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:8080');
|
|
|
|
+
|
|
|
|
+ // 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:8080');
|
|
|
|
+
|
|
|
|
+ // 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:8080');
|
|
|
|
+
|
|
|
|
+ // 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:8080');
|
|
|
|
+
|
|
|
|
+ // 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:8080');
|
|
|
|
+
|
|
|
|
+ // 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 = await 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');
|
|
|
|
+
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+// Shutdown the li
|