@@ -9,17 +9,188 @@ import { FtrProviderContext } from '../ftr_provider_context';
99
1010export function SearchSynonymsPageProvider ( { getService } : FtrProviderContext ) {
1111 const testSubjects = getService ( 'testSubjects' ) ;
12+ const find = getService ( 'find' ) ;
1213
1314 return {
1415 SynonymsGetStartedPage : {
16+ TEST_IDS : {
17+ GET_STARTED_BUTTON : 'searchSynonymsEmptyPromptGetStartedButton' ,
18+ CREATE_SYNONYMS_SET_MODAL_INPUT : 'searchSynonymsCreateSynonymsSetModalFieldText' ,
19+ CREATE_SYNONYMS_SET_MODAL_CREATE_BUTTON : 'searchSynonymsCreateSynonymsSetModalCreateButton' ,
20+ CREATE_SYNONYMS_SET_MODAL_OVERWRITE_CHECKBOX :
21+ 'searchSynonymsCreateSynonymsSetModalForceWrite' ,
22+ } ,
1523 async expectSynonymsGetStartedPageComponentsToExist ( ) {
16- await testSubjects . existOrFail ( 'searchSynonymsEmptyPromptGetStartedButton' ) ;
24+ await testSubjects . existOrFail ( this . TEST_IDS . GET_STARTED_BUTTON ) ;
25+ } ,
26+ async clickCreateSynonymsSetButton ( ) {
27+ await testSubjects . click ( this . TEST_IDS . GET_STARTED_BUTTON ) ;
28+ } ,
29+ async setSynonymsSetName ( name : string ) {
30+ await testSubjects . setValue ( this . TEST_IDS . CREATE_SYNONYMS_SET_MODAL_INPUT , name ) ;
31+ } ,
32+ async clickSaveButton ( ) {
33+ await testSubjects . click ( this . TEST_IDS . CREATE_SYNONYMS_SET_MODAL_CREATE_BUTTON ) ;
34+ } ,
35+ async clickOverwriteCheckbox ( ) {
36+ await testSubjects . click ( this . TEST_IDS . CREATE_SYNONYMS_SET_MODAL_OVERWRITE_CHECKBOX ) ;
1737 } ,
1838 } ,
1939 SynonymsSetsListPage : {
40+ TEST_IDS : {
41+ SYNONYMS_SET_TABLE : 'synonyms-set-table' ,
42+ SYNONYMS_SET_ITEM_NAME : 'synonyms-set-item-name' ,
43+ SYNONYMS_SET_ITEM_RULE_COUNT : 'synonyms-set-item-rule-count' ,
44+ PAGINATION_NEXT_BUTTON : 'pagination-button-next' ,
45+ PAGE_PREVIOUS_BUTTON : 'pagination-button-previous' ,
46+ } ,
47+ async getSynonymsSetsList ( ) {
48+ const table = await testSubjects . find ( this . TEST_IDS . SYNONYMS_SET_TABLE ) ;
49+ const allRows = await table
50+ . findByTagName ( 'tbody' )
51+ . then ( ( tbody ) => tbody . findAllByTagName ( 'tr' ) ) ;
52+
53+ return Promise . all (
54+ allRows . map ( async ( row ) => {
55+ const $ = await row . parseDomContent ( ) ;
56+ return {
57+ name : $ . findTestSubject ( this . TEST_IDS . SYNONYMS_SET_ITEM_NAME ) . text ( ) . trim ( ) ,
58+ ruleCount : Number (
59+ $ . findTestSubject ( this . TEST_IDS . SYNONYMS_SET_ITEM_RULE_COUNT ) . text ( )
60+ ) ,
61+ } ;
62+ } )
63+ ) ;
64+ } ,
65+ async clickSynonymsSet ( name : string ) {
66+ // find synonym set with name and click on it
67+ const table = await testSubjects . findAll ( this . TEST_IDS . SYNONYMS_SET_ITEM_NAME ) ;
68+ for ( const item of table ) {
69+ const text = await item . getVisibleText ( ) ;
70+ if ( text === name ) {
71+ await item . click ( ) ;
72+ return ;
73+ }
74+ }
75+ throw new Error ( `Synonyms set with name "${ name } " not found` ) ;
76+ } ,
2077 async expectSynonymsSetsListPageComponentsToExist ( ) {
21- await testSubjects . existOrFail ( 'synonyms-set-table' ) ;
22- await testSubjects . existOrFail ( 'synonyms-set-item-rule-count' ) ;
78+ await testSubjects . existOrFail ( this . TEST_IDS . SYNONYMS_SET_TABLE ) ;
79+ await testSubjects . existOrFail ( this . TEST_IDS . SYNONYMS_SET_ITEM_RULE_COUNT ) ;
80+ } ,
81+ async clickPaginationNext ( ) {
82+ await testSubjects . click ( this . TEST_IDS . PAGINATION_NEXT_BUTTON ) ;
83+ } ,
84+ async clickPaginationPrevious ( ) {
85+ await testSubjects . click ( this . TEST_IDS . PAGE_PREVIOUS_BUTTON ) ;
86+ } ,
87+ } ,
88+ SynonymsSetDetailPage : {
89+ TEST_IDS : {
90+ EMPTY_RULES_CARDS_ADD_EQUIVALENT_RULE_BUTTON :
91+ 'searchSynonymsSynonymsSetEmptyRulesCardsAddEquivalentRuleButton' ,
92+ EMPTY_RULES_CARDS_ADD_EXPLICIT_RULE_BUTTON :
93+ 'searchSynonymsSynonymsSetEmptyRulesCardsAddExplicitRuleButton' ,
94+ TABLE_EXPAND_RULE_BUTTON : 'searchSynonymsColumnsButton' ,
95+ TABLE_FROM_RULES : 'synonyms-set-item-explicit-from' ,
96+ TABLE_TO_RULES : 'synonyms-set-item-explicit-to' ,
97+ TABLE_EQUIVALENT_RULES : 'synonyms-set-item-equivalent' ,
98+ RULE_ACTIONS_DELETE_BUTTON : 'searchSynonymsSynonymsSetTableDeleteRuleButton' ,
99+ RULE_ACTIONS_EDIT_BUTTON : 'searchSynonymsSynonymsSetTableEditRuleButton' ,
100+ ADD_NEW_RULE_BUTTON : 'searchSynonymsSynonymsSetRuleTableAddRuleButton' ,
101+ } ,
102+ async expectSynonymsSetDetailPageNavigated ( name : string ) {
103+ const h1Element = await find . byCssSelector ( 'main header h1' ) ;
104+ const text = await h1Element . getVisibleText ( ) ;
105+ if ( text !== name ) {
106+ throw new Error ( `Expected page title to be "${ name } " but got "${ text } "` ) ;
107+ }
108+ } ,
109+
110+ async expectEmptyPromptToExist ( ) {
111+ await testSubjects . existOrFail ( this . TEST_IDS . EMPTY_RULES_CARDS_ADD_EQUIVALENT_RULE_BUTTON ) ;
112+ await testSubjects . existOrFail ( this . TEST_IDS . EMPTY_RULES_CARDS_ADD_EXPLICIT_RULE_BUTTON ) ;
113+ } ,
114+ async getSynonymsRules ( ) {
115+ const table = await testSubjects . find ( 'synonyms-set-table' ) ;
116+ const allRows = await table
117+ . findByTagName ( 'tbody' )
118+ . then ( ( tbody ) => tbody . findAllByTagName ( 'tr' ) ) ;
119+
120+ return Promise . all (
121+ allRows . map ( async ( row ) => {
122+ const $ = await row . parseDomContent ( ) ;
123+ if ( $ . findTestSubject ( 'synonyms-set-item-explicit-from' ) . length > 0 ) {
124+ return {
125+ synonyms : `${ $ . findTestSubject ( 'synonyms-set-item-explicit-from' )
126+ . text ( )
127+ . trim ( ) } => ${ $ . findTestSubject ( 'synonyms-set-item-explicit-to' ) . text ( ) . trim ( ) } `,
128+ } ;
129+ } else {
130+ return {
131+ synonyms : $ . findTestSubject ( 'synonyms-set-item-equivalent' ) . text ( ) . trim ( ) ,
132+ } ;
133+ }
134+ } )
135+ ) ;
136+ } ,
137+ async clickCreateRuleButton ( ) {
138+ await testSubjects . click ( this . TEST_IDS . ADD_NEW_RULE_BUTTON ) ;
139+ } ,
140+ async clickEquivalentRule ( ) {
141+ await testSubjects . click ( this . TEST_IDS . EMPTY_RULES_CARDS_ADD_EQUIVALENT_RULE_BUTTON ) ;
142+ } ,
143+ async clickExplicitRule ( ) {
144+ await testSubjects . click ( this . TEST_IDS . EMPTY_RULES_CARDS_ADD_EXPLICIT_RULE_BUTTON ) ;
145+ } ,
146+ async deleteRule ( index : number ) {
147+ const table = await testSubjects . find ( 'synonyms-set-table' ) ;
148+ const allRows = await table
149+ . findByTagName ( 'tbody' )
150+ . then ( ( tbody ) => tbody . findAllByTagName ( 'tr' ) ) ;
151+ const deleteButton = await allRows [ index ] . findByTestSubject (
152+ this . TEST_IDS . RULE_ACTIONS_DELETE_BUTTON
153+ ) ;
154+ await deleteButton . click ( ) ;
155+ await testSubjects . click ( 'confirmModalConfirmButton' ) ;
156+ } ,
157+ async editRule ( index : number ) {
158+ const table = await testSubjects . find ( 'synonyms-set-table' ) ;
159+ const allRows = await table
160+ . findByTagName ( 'tbody' )
161+ . then ( ( tbody ) => tbody . findAllByTagName ( 'tr' ) ) ;
162+ const editButton = await allRows [ index ] . findByTestSubject (
163+ this . TEST_IDS . RULE_ACTIONS_EDIT_BUTTON
164+ ) ;
165+ await editButton . click ( ) ;
166+ } ,
167+ } ,
168+ SynonymRuleFlyout : {
169+ TEST_IDS : {
170+ FLYOUT_CLOSE_BUTTON : 'euiFlyoutCloseButton' ,
171+ FLYOUT_SAVE_BUTTON : 'searchSynonymsSynonymsRuleFlyoutSaveButton' ,
172+ FLYOUT_FROM_INPUT : 'searchSynonymsSynonymsRuleFlyoutFromTermsInput' ,
173+ FLYOUT_MAPTO_INPUT : 'searchSynonymsSynonymsRuleFlyoutMapToTermsInput' ,
174+ FLYOUT_FROM_BADGE : 'searchSynonymsSynonymsRuleFlyoutFromTermBadge' ,
175+ } ,
176+ async addFromSynonym ( synonym : string ) {
177+ await testSubjects . setValue ( this . TEST_IDS . FLYOUT_FROM_INPUT , synonym ) ;
178+ await testSubjects . setValue ( this . TEST_IDS . FLYOUT_FROM_INPUT , '\uE007' ) ;
179+ } ,
180+ async addMapTo ( synonym : string ) {
181+ await testSubjects . setValue ( this . TEST_IDS . FLYOUT_MAPTO_INPUT , synonym ) ;
182+ } ,
183+ async clickSaveButton ( ) {
184+ await testSubjects . click ( this . TEST_IDS . FLYOUT_SAVE_BUTTON ) ;
185+ } ,
186+ async removeSynonym ( index : number ) {
187+ // get the badges and click on the one with the index
188+ const badges = await testSubjects . findAll ( this . TEST_IDS . FLYOUT_FROM_BADGE ) ;
189+ if ( index >= badges . length ) {
190+ throw new Error ( `Badge with index ${ index } not found` ) ;
191+ }
192+ const deleteButton = await badges [ index ] . findByTagName ( 'button' ) ;
193+ await deleteButton . click ( ) ;
23194 } ,
24195 } ,
25196 } ;
0 commit comments