diff --git a/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleStateAndStyle-default-1.png b/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleStateAndStyle-default-1.png new file mode 100644 index 0000000000..031be9c896 Binary files /dev/null and b/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleStateAndStyle-default-1.png differ diff --git a/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleStateAndStyle-default-dark-theme-1.png b/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleStateAndStyle-default-dark-theme-1.png new file mode 100644 index 0000000000..55b8abdc43 Binary files /dev/null and b/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleStateAndStyle-default-dark-theme-1.png differ diff --git a/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleStateAndStyle-indeterminate-1.png b/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleStateAndStyle-indeterminate-1.png new file mode 100644 index 0000000000..b47767ad51 Binary files /dev/null and b/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleStateAndStyle-indeterminate-1.png differ diff --git a/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleWithTextAndCaption-big-1.png b/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleWithTextAndCaption-big-1.png new file mode 100644 index 0000000000..01e4578ea5 Binary files /dev/null and b/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleWithTextAndCaption-big-1.png differ diff --git a/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleWithTextAndCaption-default-1.png b/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleWithTextAndCaption-default-1.png new file mode 100644 index 0000000000..2ff03376a8 Binary files /dev/null and b/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleWithTextAndCaption-default-1.png differ diff --git a/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleWithTextAndCaption-default-dark-theme-1.png b/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleWithTextAndCaption-default-dark-theme-1.png new file mode 100644 index 0000000000..3bb07f9b7b Binary files /dev/null and b/packages/components-dev/e2e/components/__screenshots__/KbqToggleModule-DevToggleWithTextAndCaption-default-dark-theme-1.png differ diff --git a/packages/components-dev/e2e/components/toggle.playwright-spec.ts b/packages/components-dev/e2e/components/toggle.playwright-spec.ts new file mode 100644 index 0000000000..ecfbbca560 --- /dev/null +++ b/packages/components-dev/e2e/components/toggle.playwright-spec.ts @@ -0,0 +1,72 @@ +import { expect, Locator, Page, test } from '@playwright/test'; +import { devEnableDarkTheme, devGoToRootPage } from '../utils'; + +test.describe('KbqToggleModule', () => { + const getScreenshotTarget = (locator: Locator): Locator => locator.getByTestId('e2eScreenshotTarget'); + const getIndeterminateToggle = (locator: Locator): Locator => locator.getByTestId('e2eIndeterminateToggle'); + const getBigToggle = (locator: Locator): Locator => locator.getByTestId('e2eBigToggle'); + + test.describe('DevToggleStateAndStyle', () => { + const getComponent = (page: Page): Locator => page.getByTestId('e2eToggleStateAndStyle'); + const getFirstToggle = (locator: Locator): Locator => locator.locator('kbq-toggle').first(); + + test('default', async ({ page }) => { + await devGoToRootPage(page); + await expect(getScreenshotTarget(getComponent(page))).toHaveScreenshot(); + }); + + test('default (dark theme)', async ({ page }) => { + await devGoToRootPage(page); + await devEnableDarkTheme(page); + await expect(getScreenshotTarget(getComponent(page))).toHaveScreenshot(); + }); + + test('should have correct size', async ({ page }) => { + await devGoToRootPage(page); + + const component = getComponent(page); + const { width, height } = (await getFirstToggle(component).boundingBox()) ?? {}; + + expect(width).toBe(28); + expect(height).toBe(16); + + await getBigToggle(component).click(); + + expect(width).toBe(28); + expect(height).toBe(16); + }); + + test('indeterminate', async ({ page }) => { + await devGoToRootPage(page); + + const component = getComponent(page); + + await getIndeterminateToggle(component).click(); + await expect(getScreenshotTarget(component)).toHaveScreenshot(); + }); + }); + + test.describe('DevToggleWithTextAndCaption', () => { + const getComponent = (page: Page): Locator => page.getByTestId('e2eToggleWithTextAndCaption'); + + test('default', async ({ page }) => { + await devGoToRootPage(page); + await expect(getScreenshotTarget(getComponent(page))).toHaveScreenshot(); + }); + + test('default (dark theme)', async ({ page }) => { + await devGoToRootPage(page); + await devEnableDarkTheme(page); + await expect(getScreenshotTarget(getComponent(page))).toHaveScreenshot(); + }); + + test('big', async ({ page }) => { + await devGoToRootPage(page); + + const component = getComponent(page); + + await getBigToggle(component).click(); + await expect(getScreenshotTarget(component)).toHaveScreenshot(); + }); + }); +}); diff --git a/packages/components-dev/e2e/components/toggle.ts b/packages/components-dev/e2e/components/toggle.ts new file mode 100644 index 0000000000..3258326498 --- /dev/null +++ b/packages/components-dev/e2e/components/toggle.ts @@ -0,0 +1,120 @@ +import { ChangeDetectionStrategy, Component, model } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { KbqComponentColors } from '@koobiq/components/core'; +import { KbqFormFieldModule } from '@koobiq/components/form-field'; +import { KbqToggleModule } from '@koobiq/components/toggle'; + +@Component({ + standalone: true, + imports: [KbqToggleModule, FormsModule], + selector: 'dev-toggle-state-and-style', + host: { + 'data-testid': 'e2eToggleStateAndStyle' + }, + template: ` + + + +
|
+
+ @for (type of types; track type) {
+
+ |
+ }
+
|
+
+
+ |
+ }
+