diff --git a/packages/reflow/tests/classlist/classlist.spec.ts b/packages/reflow/tests/classlist/classlist.spec.ts new file mode 100644 index 0000000..2e8ebb0 --- /dev/null +++ b/packages/reflow/tests/classlist/classlist.spec.ts @@ -0,0 +1,18 @@ +import { expect, test } from "playwright/test"; + +test("classlist sink", async ({ page }) => { + await page.goto("http://localhost:8000/classlist/index.html"); + + const button = page.getByRole("button"); + const output = page.getByTestId("output"); + + await expect(output).toHaveClass("selected"); + + await button.click(); + await expect(output).not.toHaveClass("selected"); + await expect(output).toHaveClass("rounded opacity-0"); + + await button.click(); + await expect(output).toHaveClass("selected"); + await expect(output).not.toHaveClass("rounded opacity-0"); +}); diff --git a/packages/reflow/tests/classlist/index.js b/packages/reflow/tests/classlist/index.js new file mode 100644 index 0000000..7dc1862 --- /dev/null +++ b/packages/reflow/tests/classlist/index.js @@ -0,0 +1,18 @@ +import { reactive } from "@f-stack/functorial"; +import { classList, html, on } from "@f-stack/reflow"; + +export default () => { + const classes = reactive({ + selected: true, + get "rounded opacity-0"() { + return !this.selected; + }, + }); + + return html` + + + `; +}; diff --git a/packages/reflow/tests/derived/derived.spec.ts b/packages/reflow/tests/derived/derived.spec.ts new file mode 100644 index 0000000..614ba05 --- /dev/null +++ b/packages/reflow/tests/derived/derived.spec.ts @@ -0,0 +1,20 @@ +import { expect, test } from "playwright/test"; + +test("attr", async ({ page }) => { + await page.goto("http://localhost:8000/derived/index.html"); + + const increment = page.getByRole("button"); + const count = page.getByTestId("count"); + const even = page.getByTestId("even"); + + await expect(count).toHaveText("0"); + await expect(even).toHaveText("true"); + + await increment.click(); + await expect(count).toHaveText("1"); + await expect(even).toHaveText("false"); + + await increment.click(); + await expect(count).toHaveText("2"); + await expect(even).toHaveText("true"); +}); diff --git a/packages/reflow/tests/derived/index.js b/packages/reflow/tests/derived/index.js new file mode 100644 index 0000000..14d409d --- /dev/null +++ b/packages/reflow/tests/derived/index.js @@ -0,0 +1,12 @@ +import { derived, reactive } from "@f-stack/functorial"; +import { html, on } from "@f-stack/reflow"; + +export default () => { + const count = reactive({ value: 0 }); + + return html` + +

${count}

+

${derived(() => count.value % 2 === 0)}

+ `; +}; diff --git a/packages/reflow/tests/prop/index.js b/packages/reflow/tests/prop/index.js new file mode 100644 index 0000000..50f497d --- /dev/null +++ b/packages/reflow/tests/prop/index.js @@ -0,0 +1,17 @@ +import { reactive } from "@f-stack/functorial"; +import { html, on, prop } from "@f-stack/reflow"; + +export default () => { + const bool = reactive({ value: true }); + + return html` + + + + `; +}; diff --git a/packages/reflow/tests/prop/prop.spec.ts b/packages/reflow/tests/prop/prop.spec.ts new file mode 100644 index 0000000..e34bcaf --- /dev/null +++ b/packages/reflow/tests/prop/prop.spec.ts @@ -0,0 +1,16 @@ +import { expect, test } from "playwright/test"; + +test("prop", async ({ page }) => { + await page.goto("http://localhost:8000/prop/index.html"); + + const button = page.getByRole("button"); + const checkbox = page.getByRole("checkbox"); + + await expect(checkbox).toHaveJSProperty("indeterminate", true); + + await button.click(); + await expect(checkbox).toHaveJSProperty("indeterminate", false); + + await button.click(); + await expect(checkbox).toHaveJSProperty("indeterminate", true); +});