MCPcopy
hub / github.com/testing-library/dom-testing-library / queryAllByLabelText

Function queryAllByLabelText

src/queries/label-text.ts:49–122  ·  view source on GitHub ↗
(
  container,
  text,
  {selector = '*', exact = true, collapseWhitespace, trim, normalizer} = {},
)

Source from the content-addressed store, hash-verified

47}
48
49const queryAllByLabelText: AllByText = (
50 container,
51 text,
52 {selector = '*', exact = true, collapseWhitespace, trim, normalizer} = {},
53) => {
54 checkContainerType(container)
55
56 const matcher = exact ? matches : fuzzyMatches
57 const matchNormalizer = makeNormalizer({collapseWhitespace, trim, normalizer})
58 const matchingLabelledElements = Array.from(
59 container.querySelectorAll<HTMLElement>('*'),
60 )
61 .filter(element => {
62 return (
63 getRealLabels(element).length || element.hasAttribute('aria-labelledby')
64 )
65 })
66 .reduce<HTMLElement[]>((labelledElements, labelledElement) => {
67 const labelList = getLabels(container, labelledElement, {selector})
68 labelList
69 .filter(label => Boolean(label.formControl))
70 .forEach(label => {
71 if (
72 matcher(label.content, label.formControl, text, matchNormalizer) &&
73 label.formControl
74 ) {
75 labelledElements.push(label.formControl)
76 }
77 })
78 const labelsValue = labelList
79 .filter(label => Boolean(label.content))
80 .map(label => label.content)
81 if (
82 matcher(labelsValue.join(' '), labelledElement, text, matchNormalizer)
83 ) {
84 labelledElements.push(labelledElement)
85 }
86 if (labelsValue.length > 1) {
87 labelsValue.forEach((labelValue, index) => {
88 if (matcher(labelValue, labelledElement, text, matchNormalizer)) {
89 labelledElements.push(labelledElement)
90 }
91
92 const labelsFiltered = [...labelsValue]
93 labelsFiltered.splice(index, 1)
94
95 if (labelsFiltered.length > 1) {
96 if (
97 matcher(
98 labelsFiltered.join(' '),
99 labelledElement,
100 text,
101 matchNormalizer,
102 )
103 ) {
104 labelledElements.push(labelledElement)
105 }
106 }

Callers 2

getAllByLabelTextFunction · 0.85
element-queries.jsFile · 0.85

Calls 5

checkContainerTypeFunction · 0.90
getRealLabelsFunction · 0.90
getLabelsFunction · 0.90
makeNormalizerFunction · 0.85
queryAllByAttributeFunction · 0.85

Tested by

no test coverage detected