Skip to content

Commit 47862df

Browse files
committed
refactor: review, updated screenshot, added new tests
1 parent 39f00a8 commit 47862df

8 files changed

Lines changed: 54 additions & 10 deletions
-2.3 KB
Loading
-2.25 KB
Loading
14.4 KB
Loading
16.8 KB
Loading
-5.79 KB
Loading
11.1 KB
Loading

packages/components-dev/e2e/components/toggle.playwright-spec.ts

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ import { expect, Locator, Page, test } from '@playwright/test';
22
import { devEnableDarkTheme, devGoToRootPage } from '../utils';
33

44
test.describe('KbqToggleModule', () => {
5+
const getScreenshotTarget = (locator: Locator): Locator => locator.getByTestId('e2eScreenshotTarget');
6+
const getIndeterminateToggle = (locator: Locator): Locator => locator.getByTestId('e2eIndeterminateToggle');
7+
const getBigToggle = (locator: Locator): Locator => locator.getByTestId('e2eBigToggle');
8+
59
test.describe('DevToggleStateAndStyle', () => {
610
const getComponent = (page: Page): Locator => page.getByTestId('e2eToggleStateAndStyle');
7-
const getScreenshotTarget = (locator: Locator): Locator => locator.getByTestId('e2eScreenshotTarget');
811
const getFirstToggle = (locator: Locator): Locator => locator.locator('kbq-toggle').first();
912

1013
test('default', async ({ page }) => {
@@ -21,20 +24,49 @@ test.describe('KbqToggleModule', () => {
2124
test('should have correct size', async ({ page }) => {
2225
await devGoToRootPage(page);
2326

24-
const { width, height } = (await getFirstToggle(getComponent(page)).boundingBox()) ?? {};
27+
const component = getComponent(page);
28+
const { width, height } = (await getFirstToggle(component).boundingBox()) ?? {};
29+
30+
expect(width).toBe(28);
31+
expect(height).toBe(16);
32+
33+
await getBigToggle(component).click();
2534

2635
expect(width).toBe(28);
2736
expect(height).toBe(16);
2837
});
38+
39+
test('indeterminate', async ({ page }) => {
40+
await devGoToRootPage(page);
41+
42+
const component = getComponent(page);
43+
44+
await getIndeterminateToggle(component).click();
45+
await expect(getScreenshotTarget(component)).toHaveScreenshot();
46+
});
2947
});
3048

3149
test.describe('DevToggleWithTextAndCaption', () => {
3250
const getComponent = (page: Page): Locator => page.getByTestId('e2eToggleWithTextAndCaption');
33-
const getScreenshotTarget = (locator: Locator): Locator => locator.getByTestId('e2eScreenshotTarget');
3451

3552
test('default', async ({ page }) => {
3653
await devGoToRootPage(page);
3754
await expect(getScreenshotTarget(getComponent(page))).toHaveScreenshot();
3855
});
56+
57+
test('default (dark theme)', async ({ page }) => {
58+
await devGoToRootPage(page);
59+
await devEnableDarkTheme(page);
60+
await expect(getScreenshotTarget(getComponent(page))).toHaveScreenshot();
61+
});
62+
63+
test('big', async ({ page }) => {
64+
await devGoToRootPage(page);
65+
66+
const component = getComponent(page);
67+
68+
await getBigToggle(component).click();
69+
await expect(getScreenshotTarget(component)).toHaveScreenshot();
70+
});
3971
});
4072
});

packages/components-dev/e2e/components/toggle.ts

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
1-
import { ChangeDetectionStrategy, Component } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, model } from '@angular/core';
2+
import { FormsModule } from '@angular/forms';
23
import { KbqComponentColors } from '@koobiq/components/core';
34
import { KbqFormFieldModule } from '@koobiq/components/form-field';
45
import { KbqToggleModule } from '@koobiq/components/toggle';
56

67
@Component({
78
standalone: true,
8-
imports: [KbqToggleModule],
9+
imports: [KbqToggleModule, FormsModule],
910
selector: 'dev-toggle-state-and-style',
1011
host: {
1112
'data-testid': 'e2eToggleStateAndStyle'
1213
},
1314
template: `
15+
<input type="checkbox" data-testid="e2eIndeterminateToggle" [(ngModel)]="indeterminate" />
16+
<input type="checkbox" data-testid="e2eBigToggle" [(ngModel)]="big" />
17+
1418
<table data-testid="e2eScreenshotTarget">
1519
<tbody>
1620
@for (color of colors; track color) {
@@ -22,11 +26,12 @@ import { KbqToggleModule } from '@koobiq/components/toggle';
2226
<kbq-toggle
2327
[color]="color"
2428
[disabled]="state === 'disabled'"
25-
[indeterminate]="state === 'indeterminate'"
29+
[indeterminate]="indeterminate()"
2630
[class.kbq-hovered]="state === 'hovered'"
2731
[class.cdk-keyboard-focused]="state === 'focused'"
2832
[checked]="type === 'checked'"
2933
[loading]="state === 'loading'"
34+
[big]="big()"
3035
/>
3136
}
3237
</div>
@@ -52,19 +57,24 @@ import { KbqToggleModule } from '@koobiq/components/toggle';
5257
changeDetection: ChangeDetectionStrategy.OnPush
5358
})
5459
export class DevToggleStateAndStyle {
55-
readonly states = ['normal', 'hovered', 'focused', 'disabled', 'indeterminate', 'loading'] as const;
60+
readonly states = ['normal', 'hovered', 'focused', 'disabled', 'loading'] as const;
5661
readonly colors = [KbqComponentColors.Theme, KbqComponentColors.Error];
5762
readonly types = ['default', 'checked'] as const;
63+
64+
readonly indeterminate = model(false);
65+
readonly big = model(false);
5866
}
5967

6068
@Component({
6169
standalone: true,
62-
imports: [KbqToggleModule, KbqFormFieldModule],
70+
imports: [KbqToggleModule, KbqFormFieldModule, FormsModule],
6371
selector: 'dev-toggle-with-text-and-caption',
6472
host: {
6573
'data-testid': 'e2eToggleWithTextAndCaption'
6674
},
6775
template: `
76+
<input type="checkbox" data-testid="e2eBigToggle" [(ngModel)]="big" />
77+
6878
<table data-testid="e2eScreenshotTarget">
6979
<tbody>
7080
@for (state of states; track state) {
@@ -75,7 +85,7 @@ export class DevToggleStateAndStyle {
7585
<kbq-toggle
7686
[disabled]="state === 'disabled'"
7787
[labelPosition]="position"
78-
[big]="state === 'big'"
88+
[big]="big()"
7989
>
8090
Text
8191
<kbq-hint>Caption</kbq-hint>
@@ -103,6 +113,8 @@ export class DevToggleStateAndStyle {
103113
changeDetection: ChangeDetectionStrategy.OnPush
104114
})
105115
export class DevToggleWithTextAndCaption {
106-
readonly states = ['normal', 'disabled', 'big'] as const;
116+
readonly states = ['normal', 'disabled'] as const;
107117
readonly positions = ['left', 'right'] as const;
118+
119+
readonly big = model(false);
108120
}

0 commit comments

Comments
 (0)