1717 * under the License.
1818 */
1919
20+ import expect from '@kbn/expect' ;
2021import { FtrProviderContext } from '../ftr_provider_context' ;
2122
2223export function QueryBarProvider ( { getService, getPageObjects } : FtrProviderContext ) {
@@ -25,6 +26,7 @@ export function QueryBarProvider({ getService, getPageObjects }: FtrProviderCont
2526 const log = getService ( 'log' ) ;
2627 const PageObjects = getPageObjects ( [ 'header' , 'common' ] ) ;
2728 const find = getService ( 'find' ) ;
29+ const browser = getService ( 'browser' ) ;
2830
2931 class QueryBar {
3032 async getQueryString ( ) : Promise < string > {
@@ -62,6 +64,24 @@ export function QueryBarProvider({ getService, getPageObjects }: FtrProviderCont
6264 public async clickQuerySubmitButton ( ) : Promise < void > {
6365 await testSubjects . click ( 'querySubmitButton' ) ;
6466 }
67+
68+ public async switchQueryLanguage ( lang : 'kql' | 'lucene' ) : Promise < void > {
69+ await testSubjects . click ( 'switchQueryLanguageButton' ) ;
70+ const kqlToggle = await testSubjects . find ( 'languageToggle' ) ;
71+ const currentLang =
72+ ( await kqlToggle . getAttribute ( 'aria-checked' ) ) === 'true' ? 'kql' : 'lucene' ;
73+ if ( lang !== currentLang ) {
74+ await kqlToggle . click ( ) ;
75+ }
76+
77+ await browser . pressKeys ( browser . keys . ESCAPE ) ; // close popover
78+ await this . expectQueryLanguageOrFail ( lang ) ; // make sure lang is switched
79+ }
80+
81+ public async expectQueryLanguageOrFail ( lang : 'kql' | 'lucene' ) : Promise < void > {
82+ const queryLanguageButton = await testSubjects . find ( 'switchQueryLanguageButton' ) ;
83+ expect ( ( await queryLanguageButton . getVisibleText ( ) ) . toLowerCase ( ) ) . to . eql ( lang ) ;
84+ }
6585 }
6686
6787 return new QueryBar ( ) ;
0 commit comments