@@ -8,31 +8,50 @@ function Code({ children }) {
88 return < span className = "font-bold font-mono" > { children } </ span > ;
99}
1010
11- function ResultSuggestion ( { data, suggestion, result, dispatch } ) {
11+ const levels = {
12+ Role : 0 ,
13+ LabelText : 0 ,
14+ PlaceholderText : 0 ,
15+ Text : 0 ,
16+ DisplayValue : 0 ,
17+ AltText : 1 ,
18+ Title : 1 ,
19+ TestId : 2 ,
20+ generic : 3 ,
21+ } ;
22+
23+ function ResultSuggestion ( { queries, result, dispatch } ) {
24+ const suggestion = Object . values ( queries ) . find ( Boolean ) ;
1225 const used = result ?. expression || { } ;
1326
14- const usingAdvisedMethod = suggestion . method === used . method ;
15- const hasNameArg = data . name && used . args ?. [ 1 ] ?. includes ( 'name' ) ;
27+ if ( ! suggestion ) {
28+ return `Hmpf. I'm afraid I don't have any suggestions for you.` ;
29+ }
30+
31+ const usingAdvisedMethod = suggestion . queryMethod === used . method ;
32+ const nameOption = suggestion . queryArgs [ 1 ] ?. name ;
33+ const hasNameArg = nameOption && used . args ?. [ 1 ] ?. includes ( 'name' ) ;
1634
17- const color = usingAdvisedMethod ? 'bg-green-600' : colors [ suggestion . level ] ;
35+ const level = levels [ suggestion . queryName ] ?? 3 ;
36+ const color = usingAdvisedMethod ? 'bg-green-600' : colors [ level ] ;
1837
1938 const target = result ?. target || { } ;
2039
2140 let message ;
2241
23- if ( suggestion . level < used . level ) {
42+ if ( level < used . level ) {
2443 message = (
2544 < p >
2645 You're using < Code > { used . method } </ Code > , which falls under{ ' ' }
2746 < Code > { messages [ used . level ] . heading } </ Code > . Upgrading to{ ' ' }
28- < Code > { suggestion . method } </ Code > is recommended.
47+ < Code > { suggestion . queryMethod } </ Code > is recommended.
2948 </ p >
3049 ) ;
31- } else if ( suggestion . level === 0 && suggestion . method !== used . method ) {
50+ } else if ( level === 0 && suggestion . queryMethod !== used . method ) {
3251 message = (
3352 < p >
3453 Nice! < Code > { used . method } </ Code > is a great selector! Using{ ' ' }
35- < Code > { suggestion . method } </ Code > would still be preferable though.
54+ < Code > { suggestion . queryMethod } </ Code > would still be preferable though.
3655 </ p >
3756 ) ;
3857 } else if ( target . tagName === 'INPUT' && ! target . getAttribute ( 'type' ) ) {
@@ -44,9 +63,9 @@ function ResultSuggestion({ data, suggestion, result, dispatch }) {
4463 </ p >
4564 ) ;
4665 } else if (
47- suggestion . level === 0 &&
48- suggestion . method === 'getByRole' &&
49- ! data . name
66+ level === 0 &&
67+ suggestion . queryMethod === 'getByRole' &&
68+ ! nameOption
5069 ) {
5170 message = (
5271 < p >
@@ -56,9 +75,9 @@ function ResultSuggestion({ data, suggestion, result, dispatch }) {
5675 </ p >
5776 ) ;
5877 } else if (
59- suggestion . level === 0 &&
60- suggestion . method === 'getByRole' &&
61- data . name &&
78+ level === 0 &&
79+ suggestion . queryMethod === 'getByRole' &&
80+ nameOption &&
6281 ! hasNameArg
6382 ) {
6483 message = (
@@ -83,23 +102,23 @@ function ResultSuggestion({ data, suggestion, result, dispatch }) {
83102 < div className = "space-y-4 text-sm" >
84103 < div className = { [ 'text-white p-4 rounded space-y-2' , color ] . join ( ' ' ) } >
85104 < div className = "font-bold text-xs" > suggested query</ div >
86- { suggestion . expression && (
105+ { suggestion . excerpt && (
87106 < div className = "flex justify-between" >
88107 < div
89108 className = "font-mono cursor-pointer text-xs"
90109 onClick = { ( ) =>
91110 dispatch ( {
92111 type : 'SET_QUERY' ,
93- query : suggestion . expression ,
112+ query : suggestion . snippet ,
94113 } )
95114 }
96115 >
97- > { suggestion . expression }
116+ > { suggestion . excerpt }
98117 < br />
99118 </ div >
100119 < CopyButton
101120 title = "copy query"
102- text = { suggestion . expression }
121+ text = { suggestion . snippet }
103122 variant = "white"
104123 />
105124 </ div >
0 commit comments