Skip to content

Commit 0e7d7ac

Browse files
authored
Merge pull request #472 from ProgressPlanner/ari/fix-470
a11y fix for checkboxes label
2 parents d6b7faf + b43d818 commit 0e7d7ac

4 files changed

Lines changed: 37 additions & 30 deletions

File tree

assets/js/web-components/prpl-suggested-task.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ customElements.define(
214214

215215
output += `<input
216216
type="checkbox"
217+
id="prpl-suggested-task-checkbox-${ task_id }"
217218
class="prpl-suggested-task-checkbox"
218219
style="${ checkboxStyle }"
219220
${ ! dismissable ? 'disabled' : '' }
@@ -253,11 +254,17 @@ customElements.define(
253254
data-task-list="${ taskList }"
254255
>
255256
${ actionButtons.completeCheckbox }
256-
<h3 style="width: 100%;"><span${
257-
'user' === category
258-
? ` contenteditable="plaintext-only"`
259-
: ''
260-
}>${ taskHeading }</span></h3>
257+
<h3 style="width: 100%;">
258+
${
259+
useCheckbox
260+
? `<label for="prpl-suggested-task-checkbox-${ task_id }">`
261+
: ''
262+
}
263+
<span${ 'user' === category ? ` contenteditable="plaintext-only"` : '' }>
264+
${ taskHeading }
265+
</span>
266+
${ useCheckbox && dismissable ? `</label>` : '' }
267+
</h3>
261268
<div class="prpl-suggested-task-actions">
262269
<div class="tooltip-actions">
263270
${ actionButtons.info }

tests/e2e/todo-complete.spec.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,9 @@ function todoCompleteTests( testContext = test ) {
9696
const todoItemElement = page.locator(
9797
`ul#todo-list ${ taskSelector }`
9898
);
99-
await expect( todoItemElement.locator( 'h3 > span' ) ).toHaveText(
100-
TEST_TASK_TEXT
101-
);
99+
await expect(
100+
todoItemElement.locator( 'h3 > label > span' )
101+
).toHaveText( TEST_TASK_TEXT );
102102

103103
// Click the checkbox to complete the task
104104
await todoItemElement
@@ -119,9 +119,9 @@ function todoCompleteTests( testContext = test ) {
119119
`ul#todo-list-completed ${ taskSelector }`
120120
);
121121
await expect( completedTask ).toBeVisible();
122-
await expect( completedTask.locator( 'h3 > span' ) ).toHaveText(
123-
TEST_TASK_TEXT
124-
);
122+
await expect(
123+
completedTask.locator( 'h3 > label > span' )
124+
).toHaveText( TEST_TASK_TEXT );
125125
await expect(
126126
completedTask.locator( '.prpl-suggested-task-checkbox' )
127127
).toBeChecked();
@@ -172,9 +172,9 @@ function todoCompleteTests( testContext = test ) {
172172
`ul#todo-list-completed ${ taskSelector }`
173173
);
174174
await expect( completedTask ).toBeVisible();
175-
await expect( completedTask.locator( 'h3 > span' ) ).toHaveText(
176-
TEST_TASK_TEXT
177-
);
175+
await expect(
176+
completedTask.locator( 'h3 > label > span' )
177+
).toHaveText( TEST_TASK_TEXT );
178178
await expect(
179179
completedTask.locator( '.prpl-suggested-task-checkbox' )
180180
).toBeChecked();

tests/e2e/todo-reorder.spec.js

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,15 @@ function todoReorderTests( testContext = test ) {
8181

8282
// Verify initial order
8383
const items = await todoItems.all();
84-
await expect( items[ 0 ].locator( 'h3 > span' ) ).toHaveText(
85-
FIRST_TASK_TEXT
86-
);
87-
await expect( items[ 1 ].locator( 'h3 > span' ) ).toHaveText(
88-
SECOND_TASK_TEXT
89-
);
90-
await expect( items[ 2 ].locator( 'h3 > span' ) ).toHaveText(
91-
THIRD_TASK_TEXT
92-
);
84+
await expect(
85+
items[ 0 ].locator( 'h3 > label > span' )
86+
).toHaveText( FIRST_TASK_TEXT );
87+
await expect(
88+
items[ 1 ].locator( 'h3 > label > span' )
89+
).toHaveText( SECOND_TASK_TEXT );
90+
await expect(
91+
items[ 2 ].locator( 'h3 > label > span' )
92+
).toHaveText( THIRD_TASK_TEXT );
9393

9494
// Hover over second item and click move down button
9595
await items[ 1 ].hover();
@@ -101,13 +101,13 @@ function todoReorderTests( testContext = test ) {
101101
// Verify new order
102102
const reorderedItems = await todoItems.all();
103103
await expect(
104-
reorderedItems[ 0 ].locator( 'h3 > span' )
104+
reorderedItems[ 0 ].locator( 'h3 > label > span' )
105105
).toHaveText( FIRST_TASK_TEXT );
106106
await expect(
107-
reorderedItems[ 1 ].locator( 'h3 > span' )
107+
reorderedItems[ 1 ].locator( 'h3 > label > span' )
108108
).toHaveText( THIRD_TASK_TEXT );
109109
await expect(
110-
reorderedItems[ 2 ].locator( 'h3 > span' )
110+
reorderedItems[ 2 ].locator( 'h3 > label > span' )
111111
).toHaveText( SECOND_TASK_TEXT );
112112

113113
// Reload page
@@ -117,13 +117,13 @@ function todoReorderTests( testContext = test ) {
117117
// Verify order persists after reload
118118
const persistedItems = await todoItems.all();
119119
await expect(
120-
persistedItems[ 0 ].locator( 'h3 > span' )
120+
persistedItems[ 0 ].locator( 'h3 > label > span' )
121121
).toHaveText( FIRST_TASK_TEXT );
122122
await expect(
123-
persistedItems[ 1 ].locator( 'h3 > span' )
123+
persistedItems[ 1 ].locator( 'h3 > label > span' )
124124
).toHaveText( THIRD_TASK_TEXT );
125125
await expect(
126-
persistedItems[ 2 ].locator( 'h3 > span' )
126+
persistedItems[ 2 ].locator( 'h3 > label > span' )
127127
).toHaveText( SECOND_TASK_TEXT );
128128
} );
129129
} );

tests/e2e/todo.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ function todoTests( testContext = test ) {
9191
'ul#todo-list > prpl-suggested-task li'
9292
);
9393
await expect( todoItem ).toHaveCount( 1 );
94-
await expect( todoItem.locator( 'h3 > span' ) ).toHaveText(
94+
await expect( todoItem.locator( 'h3 > label > span' ) ).toHaveText(
9595
CREATE_TASK_TEXT
9696
);
9797
} );

0 commit comments

Comments
 (0)