@dxc-technology/halstack-react 0.0.0-e2d44ba → 0.0.0-e628009
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ThemeContext.js +69 -61
- package/dist/V3Textarea/V3Textarea.js +264 -0
- package/dist/alert/Alert.js +4 -4
- package/dist/alert/index.d.ts +51 -0
- package/dist/button/Button.js +3 -3
- package/dist/common/variables.js +302 -98
- package/dist/date/Date.js +10 -12
- package/dist/{new-date/NewDate.js → date-input/DateInput.js} +69 -72
- package/dist/date-input/index.d.ts +95 -0
- package/dist/file-input/FileInput.js +644 -0
- package/dist/file-input/FileItem.js +280 -0
- package/dist/file-input/index.d.ts +81 -0
- package/dist/footer/Footer.js +44 -18
- package/dist/footer/Icons.js +77 -0
- package/dist/header/Header.js +82 -51
- package/dist/header/Icons.js +59 -0
- package/dist/heading/Heading.js +12 -0
- package/dist/input-text/Icons.js +22 -0
- package/dist/input-text/InputText.js +7 -9
- package/dist/layout/ApplicationLayout.js +5 -9
- package/dist/layout/Icons.js +55 -0
- package/dist/link/Link.js +4 -8
- package/dist/main.d.ts +8 -0
- package/dist/main.js +37 -21
- package/dist/new-select/NewSelect.js +836 -0
- package/dist/new-select/index.d.ts +53 -0
- package/dist/{number/Number.js → number-input/NumberInput.js} +9 -11
- package/dist/{number/NumberContext.js → number-input/NumberInputContext.js} +2 -2
- package/dist/number-input/index.d.ts +113 -0
- package/dist/paginator/Icons.js +66 -0
- package/dist/paginator/Paginator.js +5 -11
- package/dist/{password/Password.js → password-input/PasswordInput.js} +11 -13
- package/dist/password-input/index.d.ts +94 -0
- package/dist/sidenav/Sidenav.js +6 -4
- package/dist/slider/Slider.js +104 -19
- package/dist/tag/Tag.js +26 -32
- package/dist/{new-input-text/NewInputText.js → text-input/TextInput.js} +180 -170
- package/dist/text-input/index.d.ts +135 -0
- package/dist/textarea/Textarea.js +227 -122
- package/dist/textarea/index.d.ts +117 -0
- package/dist/toggle-group/ToggleGroup.js +132 -28
- package/dist/upload/Upload.js +3 -3
- package/dist/upload/buttons-upload/ButtonsUpload.js +7 -11
- package/dist/upload/buttons-upload/Icons.js +40 -0
- package/dist/upload/dragAndDropArea/DragAndDropArea.js +14 -14
- package/dist/upload/dragAndDropArea/Icons.js +39 -0
- package/dist/upload/file-upload/FileToUpload.js +26 -21
- package/dist/upload/file-upload/Icons.js +66 -0
- package/dist/upload/transaction/Icons.js +160 -0
- package/dist/upload/transaction/Transaction.js +11 -38
- package/dist/wizard/Icons.js +65 -0
- package/dist/wizard/Wizard.js +3 -9
- package/package.json +2 -1
- package/test/Date.test.js +48 -44
- package/test/{NewDate.test.js → DateInput.test.js} +66 -27
- package/test/FileInput.test.js +201 -0
- package/test/Footer.test.js +2 -7
- package/test/Header.test.js +5 -10
- package/test/Heading.test.js +60 -12
- package/test/InputText.test.js +24 -16
- package/test/{Number.test.js → NumberInput.test.js} +84 -66
- package/test/PasswordInput.test.js +83 -0
- package/test/Slider.test.js +9 -17
- package/test/{NewInputText.test.js → TextInput.test.js} +146 -231
- package/test/Textarea.test.js +193 -0
- package/test/ToggleGroup.test.js +5 -1
- package/test/Upload.test.js +5 -5
- package/test/{TextArea.test.js → V3TextArea.test.js} +6 -7
- package/dist/checkbox/Checkbox.stories.js +0 -144
- package/dist/checkbox/readme.md +0 -116
- package/dist/date/Date.stories.js +0 -205
- package/dist/date/readme.md +0 -73
- package/dist/footer/Footer.stories.js +0 -94
- package/dist/footer/dxc_logo.svg +0 -15
- package/dist/footer/readme.md +0 -41
- package/dist/header/Header.stories.js +0 -176
- package/dist/header/close_icon.svg +0 -1
- package/dist/header/dxc_logo_black.svg +0 -8
- package/dist/header/hamb_menu_black.svg +0 -1
- package/dist/header/hamb_menu_white.svg +0 -1
- package/dist/header/readme.md +0 -33
- package/dist/input-text/InputText.stories.js +0 -209
- package/dist/input-text/error.svg +0 -1
- package/dist/input-text/readme.md +0 -91
- package/dist/layout/facebook.svg +0 -45
- package/dist/layout/linkedin.svg +0 -50
- package/dist/layout/twitter.svg +0 -53
- package/dist/link/readme.md +0 -51
- package/dist/new-textarea/NewTextarea.js +0 -346
- package/dist/paginator/images/next.svg +0 -3
- package/dist/paginator/images/nextPage.svg +0 -3
- package/dist/paginator/images/previous.svg +0 -3
- package/dist/paginator/images/previousPage.svg +0 -3
- package/dist/paginator/readme.md +0 -50
- package/dist/password/styles.css +0 -3
- package/dist/progress-bar/ProgressBar.stories.js +0 -280
- package/dist/progress-bar/readme.md +0 -63
- package/dist/radio/Radio.stories.js +0 -166
- package/dist/radio/readme.md +0 -70
- package/dist/resultsetTable/arrow_downward-24px_wht.svg +0 -1
- package/dist/resultsetTable/arrow_upward-24px_wht.svg +0 -1
- package/dist/resultsetTable/unfold_more-24px_wht.svg +0 -1
- package/dist/slider/Slider.stories.js +0 -241
- package/dist/slider/readme.md +0 -64
- package/dist/spinner/Spinner.stories.js +0 -183
- package/dist/spinner/readme.md +0 -65
- package/dist/switch/Switch.stories.js +0 -134
- package/dist/switch/readme.md +0 -133
- package/dist/tabs/Tabs.stories.js +0 -130
- package/dist/tabs/readme.md +0 -78
- package/dist/tabs-for-sections/readme.md +0 -78
- package/dist/toggle/Toggle.stories.js +0 -297
- package/dist/toggle/readme.md +0 -80
- package/dist/upload/Upload.stories.js +0 -72
- package/dist/upload/buttons-upload/drag-drop-icon.svg +0 -4
- package/dist/upload/buttons-upload/upload-button.svg +0 -1
- package/dist/upload/dragAndDropArea/upload_drop.svg +0 -4
- package/dist/upload/dragAndDropArea/upload_file.svg +0 -4
- package/dist/upload/file-upload/audio-icon.svg +0 -4
- package/dist/upload/file-upload/close.svg +0 -4
- package/dist/upload/file-upload/file-icon.svg +0 -4
- package/dist/upload/file-upload/video-icon.svg +0 -4
- package/dist/upload/readme.md +0 -37
- package/dist/upload/transaction/audio-icon-err.svg +0 -4
- package/dist/upload/transaction/audio-icon.svg +0 -4
- package/dist/upload/transaction/error-icon.svg +0 -4
- package/dist/upload/transaction/file-icon-err.svg +0 -4
- package/dist/upload/transaction/file-icon.svg +0 -4
- package/dist/upload/transaction/image-icon-err.svg +0 -4
- package/dist/upload/transaction/image-icon.svg +0 -4
- package/dist/upload/transaction/success-icon.svg +0 -4
- package/dist/upload/transaction/video-icon-err.svg +0 -4
- package/dist/upload/transaction/video-icon.svg +0 -4
- package/dist/wizard/invalid_icon.svg +0 -5
- package/dist/wizard/valid_icon.svg +0 -5
- package/dist/wizard/validation-wrong.svg +0 -6
- package/test/NewTextarea.test.js +0 -201
- package/test/Password.test.js +0 -76
package/test/NewTextarea.test.js
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { render, fireEvent } from "@testing-library/react";
|
|
3
|
-
|
|
4
|
-
import DxcNewTextarea from "../src/new-textarea/NewTextarea";
|
|
5
|
-
|
|
6
|
-
describe("NewTextarea component tests", () => {
|
|
7
|
-
test("Renders with correct label", () => {
|
|
8
|
-
const { getByText } = render(<DxcNewTextarea label="Example label" />);
|
|
9
|
-
expect(getByText("Example label")).toBeTruthy();
|
|
10
|
-
});
|
|
11
|
-
test("Renders with correct label and helper text", () => {
|
|
12
|
-
const { getByText } = render(<DxcNewTextarea label="Example label" helperText="Example helper text" />);
|
|
13
|
-
expect(getByText("Example label")).toBeTruthy();
|
|
14
|
-
expect(getByText("Example helper text")).toBeTruthy();
|
|
15
|
-
});
|
|
16
|
-
test("Renders with correct label and optional", () => {
|
|
17
|
-
const { getByText } = render(<DxcNewTextarea label="Example label" helperText="Example helper text" optional />);
|
|
18
|
-
expect(getByText("Example label")).toBeTruthy();
|
|
19
|
-
expect(getByText("(Optional)")).toBeTruthy();
|
|
20
|
-
expect(getByText("Example helper text")).toBeTruthy();
|
|
21
|
-
});
|
|
22
|
-
test("Renders with correct placeholder", () => {
|
|
23
|
-
const { getByRole } = render(<DxcNewTextarea placeholder="Placeholder" />);
|
|
24
|
-
const input = getByRole("textbox");
|
|
25
|
-
expect(input.getAttribute("placeholder")).toBe("Placeholder");
|
|
26
|
-
});
|
|
27
|
-
test("Renders with error message", () => {
|
|
28
|
-
const { getByText } = render(<DxcNewTextarea error="Error message." />);
|
|
29
|
-
expect(getByText("Error message.")).toBeTruthy();
|
|
30
|
-
});
|
|
31
|
-
test("Renders with correct default rows", () => {
|
|
32
|
-
const { getByLabelText } = render(<DxcNewTextarea label="Example label" rows={10} />);
|
|
33
|
-
const textarea = getByLabelText("Example label");
|
|
34
|
-
expect(textarea.rows).toBe(10);
|
|
35
|
-
});
|
|
36
|
-
test("Strict mode - Pattern constraint", () => {
|
|
37
|
-
const onChange = jest.fn();
|
|
38
|
-
const onBlur = jest.fn();
|
|
39
|
-
const { getByLabelText, getByText, queryByText } = render(
|
|
40
|
-
<DxcNewTextarea
|
|
41
|
-
label="Example label"
|
|
42
|
-
placeholder="Placeholder"
|
|
43
|
-
onChange={onChange}
|
|
44
|
-
onBlur={onBlur}
|
|
45
|
-
margin={{ left: "medium", right: "medium" }}
|
|
46
|
-
pattern='^.*(?=.*[a-zA-Z])(?=.*\d)(?=.*[!&$%&? "]).*$'
|
|
47
|
-
/>
|
|
48
|
-
);
|
|
49
|
-
const textarea = getByLabelText("Example label");
|
|
50
|
-
fireEvent.change(textarea, { target: { value: "pattern test" } });
|
|
51
|
-
fireEvent.blur(textarea);
|
|
52
|
-
expect(getByText("Please match the format requested.")).toBeTruthy();
|
|
53
|
-
fireEvent.change(textarea, { target: { value: "pattern4&" } });
|
|
54
|
-
fireEvent.blur(textarea);
|
|
55
|
-
expect(queryByText("Please match the format requested.")).toBeFalsy();
|
|
56
|
-
});
|
|
57
|
-
test("Strict mode - Length constraint", () => {
|
|
58
|
-
const onChange = jest.fn();
|
|
59
|
-
const onBlur = jest.fn();
|
|
60
|
-
const { getByLabelText, getByText, queryByText } = render(
|
|
61
|
-
<DxcNewTextarea
|
|
62
|
-
label="Example label"
|
|
63
|
-
placeholder="Placeholder"
|
|
64
|
-
onChange={onChange}
|
|
65
|
-
onBlur={onBlur}
|
|
66
|
-
margin={{ left: "medium", right: "medium" }}
|
|
67
|
-
length={{ min: 5, max: 10 }}
|
|
68
|
-
/>
|
|
69
|
-
);
|
|
70
|
-
const textarea = getByLabelText("Example label");
|
|
71
|
-
fireEvent.change(textarea, { target: { value: "test" } });
|
|
72
|
-
fireEvent.blur(textarea);
|
|
73
|
-
expect(getByText("Min length 5, max length 10.")).toBeTruthy();
|
|
74
|
-
fireEvent.change(textarea, { target: { value: "test " } });
|
|
75
|
-
fireEvent.blur(textarea);
|
|
76
|
-
expect(queryByText(/Min length /)).toBeFalsy();
|
|
77
|
-
});
|
|
78
|
-
test("Strict mode - Pattern and length constraints", () => {
|
|
79
|
-
const onChange = jest.fn();
|
|
80
|
-
const onBlur = jest.fn();
|
|
81
|
-
const { getByLabelText, getByText, queryByText } = render(
|
|
82
|
-
<DxcNewTextarea
|
|
83
|
-
label="Example label"
|
|
84
|
-
placeholder="Placeholder"
|
|
85
|
-
onChange={onChange}
|
|
86
|
-
onBlur={onBlur}
|
|
87
|
-
margin={{ left: "medium", right: "medium" }}
|
|
88
|
-
pattern='^.*(?=.*[a-zA-Z])(?=.*\d)(?=.*[!&$%&? "]).*$'
|
|
89
|
-
length={{ min: 5, max: 10 }}
|
|
90
|
-
/>
|
|
91
|
-
);
|
|
92
|
-
const textarea = getByLabelText("Example label");
|
|
93
|
-
fireEvent.change(textarea, { target: { value: "test" } });
|
|
94
|
-
fireEvent.blur(textarea);
|
|
95
|
-
expect(getByText("Min length 5, max length 10.")).toBeTruthy();
|
|
96
|
-
fireEvent.change(textarea, { target: { value: "test " } });
|
|
97
|
-
fireEvent.blur(textarea);
|
|
98
|
-
expect(getByText("Please match the format requested.")).toBeTruthy();
|
|
99
|
-
fireEvent.change(textarea, { target: { value: "test 4" } });
|
|
100
|
-
fireEvent.blur(textarea);
|
|
101
|
-
expect(queryByText("Please match the format requested.")).toBeFalsy();
|
|
102
|
-
});
|
|
103
|
-
test("Non Strict mode - Pattern constraint", () => {
|
|
104
|
-
const onChange = jest.fn((value) => {
|
|
105
|
-
expect(value).toBe("Example value");
|
|
106
|
-
});
|
|
107
|
-
const onBlur = jest.fn(({ value, error }) => {
|
|
108
|
-
expect(value).toBe("Example value");
|
|
109
|
-
expect(error).toBe("Please match the format requested.");
|
|
110
|
-
});
|
|
111
|
-
const { getByLabelText } = render(
|
|
112
|
-
<DxcNewTextarea
|
|
113
|
-
label="Example label"
|
|
114
|
-
placeholder="Placeholder"
|
|
115
|
-
onChange={onChange}
|
|
116
|
-
onBlur={onBlur}
|
|
117
|
-
margin={{ left: "medium", right: "medium" }}
|
|
118
|
-
pattern='^.*(?=.*[a-zA-Z])(?=.*\d)(?=.*[!&$%&? "]).*$'
|
|
119
|
-
/>
|
|
120
|
-
);
|
|
121
|
-
const textarea = getByLabelText("Example label");
|
|
122
|
-
fireEvent.change(textarea, { target: { value: "Example value" } });
|
|
123
|
-
fireEvent.blur(textarea);
|
|
124
|
-
});
|
|
125
|
-
test("Non Strict mode - Length constraint", () => {
|
|
126
|
-
const onChange = jest.fn((value) => {
|
|
127
|
-
expect(value).toBe("Example value");
|
|
128
|
-
});
|
|
129
|
-
const onBlur = jest.fn(({ value, error }) => {
|
|
130
|
-
expect(value).toBe("Example value");
|
|
131
|
-
expect(error).toBe("Min length 5, max length 10.");
|
|
132
|
-
});
|
|
133
|
-
const { getByLabelText } = render(
|
|
134
|
-
<DxcNewTextarea
|
|
135
|
-
label="Example label"
|
|
136
|
-
placeholder="Placeholder"
|
|
137
|
-
onChange={onChange}
|
|
138
|
-
onBlur={onBlur}
|
|
139
|
-
margin={{ left: "medium", right: "medium" }}
|
|
140
|
-
length={{ min: 5, max: 10 }}
|
|
141
|
-
/>
|
|
142
|
-
);
|
|
143
|
-
const textarea = getByLabelText("Example label");
|
|
144
|
-
fireEvent.change(textarea, { target: { value: "Example value" } });
|
|
145
|
-
fireEvent.blur(textarea);
|
|
146
|
-
});
|
|
147
|
-
test("Non Strict mode - Pattern and length constraints", () => {
|
|
148
|
-
const onChange = jest.fn((value) => {
|
|
149
|
-
expect(value).toBe("Example value");
|
|
150
|
-
});
|
|
151
|
-
const onBlur = jest.fn(({ value, error }) => {
|
|
152
|
-
expect(value).toBe("Example value");
|
|
153
|
-
expect(error).toBe("Min length 5, max length 10.");
|
|
154
|
-
});
|
|
155
|
-
const { getByLabelText } = render(
|
|
156
|
-
<DxcNewTextarea
|
|
157
|
-
label="Example label"
|
|
158
|
-
placeholder="Placeholder"
|
|
159
|
-
onChange={onChange}
|
|
160
|
-
onBlur={onBlur}
|
|
161
|
-
margin={{ left: "medium", right: "medium" }}
|
|
162
|
-
length={{ min: 5, max: 10 }}
|
|
163
|
-
/>
|
|
164
|
-
);
|
|
165
|
-
const textarea = getByLabelText("Example label");
|
|
166
|
-
fireEvent.change(textarea, { target: { value: "Example value" } });
|
|
167
|
-
fireEvent.blur(textarea);
|
|
168
|
-
});
|
|
169
|
-
test("onBlur function is called correctly", () => {
|
|
170
|
-
const onBlur = jest.fn();
|
|
171
|
-
const { getByLabelText } = render(<DxcNewTextarea label="Example label" onBlur={onBlur} />);
|
|
172
|
-
const textarea = getByLabelText("Example label");
|
|
173
|
-
fireEvent.change(textarea, { target: { value: "Blur test" } });
|
|
174
|
-
fireEvent.blur(textarea);
|
|
175
|
-
expect(onBlur).toHaveBeenCalled();
|
|
176
|
-
expect(onBlur).toHaveBeenCalledWith({ value: "Blur test", error: null });
|
|
177
|
-
});
|
|
178
|
-
test("Controlled textarea", () => {
|
|
179
|
-
const onChange = jest.fn();
|
|
180
|
-
const onBlur = jest.fn();
|
|
181
|
-
const { getByLabelText } = render(
|
|
182
|
-
<DxcNewTextarea label="Example label" value="Test value" onChange={onChange} onBlur={onBlur} />
|
|
183
|
-
);
|
|
184
|
-
const textarea = getByLabelText("Example label");
|
|
185
|
-
fireEvent.change(textarea, { target: { value: "Controlled test" } });
|
|
186
|
-
expect(onChange).toHaveBeenCalled();
|
|
187
|
-
expect(textarea.value).toBe("Test value");
|
|
188
|
-
fireEvent.blur(textarea);
|
|
189
|
-
expect(onBlur).toHaveBeenCalled();
|
|
190
|
-
expect(onBlur).toHaveBeenCalledWith({ value: "Test value", error: null });
|
|
191
|
-
});
|
|
192
|
-
test("Uncontrolled input", () => {
|
|
193
|
-
const onChange = jest.fn();
|
|
194
|
-
const { getByLabelText } = render(<DxcNewTextarea label="Example label" onChange={onChange} />);
|
|
195
|
-
const textarea = getByLabelText("Example label");
|
|
196
|
-
fireEvent.change(textarea, { target: { value: "Uncontrolled test" } });
|
|
197
|
-
expect(onChange).toHaveBeenCalled();
|
|
198
|
-
expect(onChange).toHaveBeenCalledWith("Uncontrolled test");
|
|
199
|
-
expect(textarea.value).toBe("Uncontrolled test");
|
|
200
|
-
});
|
|
201
|
-
});
|
package/test/Password.test.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { render } from "@testing-library/react";
|
|
3
|
-
import userEvent from "@testing-library/user-event";
|
|
4
|
-
import DxcPassword from "../src/password/Password";
|
|
5
|
-
|
|
6
|
-
describe("Password component tests", () => {
|
|
7
|
-
test("Password renders with label", () => {
|
|
8
|
-
const { getByText } = render(<DxcPassword label="Password label" />);
|
|
9
|
-
expect(getByText("Password label")).toBeTruthy();
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
test("Password renders with helper text", () => {
|
|
13
|
-
const { getByText } = render(<DxcPassword helperText="Helper text" />);
|
|
14
|
-
expect(getByText("Helper text")).toBeTruthy();
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
test("Password renders error", () => {
|
|
18
|
-
const { getByText } = render(<DxcPassword error="Error message." />);
|
|
19
|
-
expect(getByText("Error message.")).toBeTruthy();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
test("onChange function is called correctly", () => {
|
|
23
|
-
const onChange = jest.fn();
|
|
24
|
-
const { getByRole } = render(<DxcPassword label="Password" onChange={onChange} />);
|
|
25
|
-
const password = getByRole("textbox");
|
|
26
|
-
userEvent.type(password, "Pa$$w0rd");
|
|
27
|
-
expect(onChange).toHaveBeenCalledWith("P");
|
|
28
|
-
expect(password.value).toBe("Pa$$w0rd");
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
test("Clear password value", () => {
|
|
32
|
-
const onChange = jest.fn();
|
|
33
|
-
const { getAllByRole, getByRole } = render(<DxcPassword label="Password" onChange={onChange} clearable />);
|
|
34
|
-
const password = getByRole("textbox");
|
|
35
|
-
userEvent.type(password, "Pa$$w0rd");
|
|
36
|
-
expect(password.value).toBe("Pa$$w0rd");
|
|
37
|
-
const clearButton = getAllByRole("button")[0];
|
|
38
|
-
userEvent.click(clearButton);
|
|
39
|
-
expect(password.value).toBe("");
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
test("Non clearable password has no clear icon", () => {
|
|
43
|
-
const onChange = jest.fn();
|
|
44
|
-
const { getAllByRole, getByRole } = render(<DxcPassword label="Password" onChange={onChange} />);
|
|
45
|
-
const password = getByRole("textbox");
|
|
46
|
-
userEvent.type(password, "Pa$$w0rd");
|
|
47
|
-
expect(password.value).toBe("Pa$$w0rd");
|
|
48
|
-
const buttons = getAllByRole("button");
|
|
49
|
-
expect(buttons.length).toBe(1);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
test("Show/hide password button works correctly", () => {
|
|
53
|
-
const onChange = jest.fn();
|
|
54
|
-
const { getAllByRole, getByRole } = render(<DxcPassword label="Password" clearable onChange={onChange} />);
|
|
55
|
-
const password = getByRole("textbox");
|
|
56
|
-
userEvent.type(password, "Pa$$w0rd");
|
|
57
|
-
expect(password.value).toBe("Pa$$w0rd");
|
|
58
|
-
expect(password.type).toBe("password");
|
|
59
|
-
const showButton = getAllByRole("button")[1];
|
|
60
|
-
userEvent.click(showButton);
|
|
61
|
-
expect(password.type).toBe("text");
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
test("Password has correct accesibility attributes", () => {
|
|
65
|
-
const { getByRole } = render(<DxcPassword label="Password" />);
|
|
66
|
-
const password = getByRole("textbox");
|
|
67
|
-
expect(password.getAttribute("aria-autocomplete")).toBeNull();
|
|
68
|
-
expect(password.getAttribute("aria-controls")).toBeNull();
|
|
69
|
-
const showButton = getByRole("button");
|
|
70
|
-
expect(showButton.getAttribute("aria-expanded")).toBe("false");
|
|
71
|
-
expect(showButton.getAttribute("aria-label")).toBe("Show");
|
|
72
|
-
userEvent.click(showButton);
|
|
73
|
-
expect(showButton.getAttribute("aria-expanded")).toBe("true");
|
|
74
|
-
expect(showButton.getAttribute("aria-label")).toBe("Hide");
|
|
75
|
-
});
|
|
76
|
-
});
|