Skip to content

Commit 2c19f4f

Browse files
fix: use custom testIdAttribute in getSuggestedQuery (#651)
Currently `getSuggestedQuery` always uses `data-testid` to find relevant elements. This change updates it to use the configured `testIdAttribute` if one has been set in the configuration.
1 parent df57d7b commit 2c19f4f

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

src/__tests__/suggestions.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ beforeAll(() => {
66
configure({throwSuggestions: true})
77
})
88

9+
afterEach(() => {
10+
configure({testIdAttribute: 'data-testid'})
11+
})
12+
913
afterAll(() => {
1014
configure({throwSuggestions: false})
1115
})
@@ -435,6 +439,34 @@ test('getSuggestedQuery can return specified methods in addition to the best', (
435439
expect(getSuggestedQuery(button, 'get', 'TestId')).toBeUndefined()
436440
})
437441

442+
test('getSuggestedQuery works with custom testIdAttribute', () => {
443+
configure({testIdAttribute: 'data-test'})
444+
445+
const {container} = render(`
446+
<label for="username">label</label>
447+
<input
448+
id="username"
449+
name="name"
450+
placeholder="placeholder"
451+
data-test="testid"
452+
title="title"
453+
alt="alt"
454+
value="value"
455+
type="text"
456+
/>
457+
<button>button</button>
458+
`)
459+
460+
const input = container.querySelector('input')
461+
462+
expect(getSuggestedQuery(input, 'get', 'TestId')).toMatchObject({
463+
queryName: 'TestId',
464+
queryMethod: 'getByTestId',
465+
queryArgs: ['testid'],
466+
variant: 'get',
467+
})
468+
})
469+
438470
test('getSuggestedQuery does not create suggestions for script and style elements', () => {
439471
const {container} = render(`
440472
<script data-testid="script"></script>

src/suggestions.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {computeAccessibleName} from 'dom-accessibility-api'
22
import {getDefaultNormalizer} from './matches'
33
import {getNodeText} from './get-node-text'
4-
import {DEFAULT_IGNORE_TAGS} from './config'
4+
import {DEFAULT_IGNORE_TAGS, getConfig} from './config'
55
import {getImplicitAriaRoles} from './role-helpers'
66

77
const normalize = getDefaultNormalizer()
@@ -120,7 +120,7 @@ export function getSuggestedQuery(element, variant = 'get', method) {
120120
return makeSuggestion('Title', title, {variant})
121121
}
122122

123-
const testId = element.getAttribute('data-testid')
123+
const testId = element.getAttribute(getConfig().testIdAttribute)
124124
if (canSuggest('TestId', method, testId)) {
125125
return makeSuggestion('TestId', testId, {variant})
126126
}

0 commit comments

Comments
 (0)