mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
Change data-test-subj selector logic to support value with spaces (#43682)
* update test-subj-selector * update locators * adjust whitespaces removal * fix another locator * fix ML test locators
This commit is contained in:
parent
40147fa83f
commit
a33909a480
51 changed files with 309 additions and 287 deletions
|
@ -22,8 +22,15 @@ const expect = require('@kbn/expect');
|
|||
|
||||
describe('testSubjSelector()', function() {
|
||||
it('converts subjectSelectors to cssSelectors', function() {
|
||||
expect(testSubjSelector('foo bar')).to.eql('[data-test-subj~="foo"] [data-test-subj~="bar"]');
|
||||
expect(testSubjSelector('foo&bar')).to.eql('[data-test-subj~="foo"][data-test-subj~="bar"]');
|
||||
expect(testSubjSelector('foo & bar')).to.eql('[data-test-subj~="foo"][data-test-subj~="bar"]');
|
||||
expect(testSubjSelector('foo bar')).to.eql('[data-test-subj="foo bar"]');
|
||||
expect(testSubjSelector('foo > bar')).to.eql('[data-test-subj="foo"] [data-test-subj="bar"]');
|
||||
expect(testSubjSelector('foo > bar baz')).to.eql(
|
||||
'[data-test-subj="foo"] [data-test-subj="bar baz"]'
|
||||
);
|
||||
expect(testSubjSelector('foo> ~bar')).to.eql('[data-test-subj="foo"] [data-test-subj~="bar"]');
|
||||
expect(testSubjSelector('~ foo')).to.eql('[data-test-subj~="foo"]');
|
||||
expect(testSubjSelector('~foo & ~ bar')).to.eql(
|
||||
'[data-test-subj~="foo"][data-test-subj~="bar"]'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -19,12 +19,20 @@
|
|||
|
||||
function selectorToTerms(selector) {
|
||||
return selector
|
||||
.replace(/\s*&\s*/g, '&') // remove all whitespace around joins
|
||||
.split(/\s+/);
|
||||
.replace(/\s*~\s*/g, '~') // css locator with '~' operator cannot contain spaces
|
||||
.replace(/\s*>\s*/g, '>') // remove all whitespace around joins >
|
||||
.replace(/\s*&\s*/g, '&') // remove all whitespace around joins &
|
||||
.split(/>+/);
|
||||
}
|
||||
|
||||
function termToCssSelector(term) {
|
||||
return term ? '[data-test-subj~="' + term + '"]' : '';
|
||||
if (term) {
|
||||
return term.startsWith('~')
|
||||
? '[data-test-subj~="' + term.substring(1).replace(/\s/g, '') + '"]'
|
||||
: '[data-test-subj="' + term + '"]';
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = function testSubjSelector(selector) {
|
||||
|
|
|
@ -56,7 +56,7 @@ export function SettingsPageProvider({ getService, getPageObjects }) {
|
|||
// check for the index pattern info flyout that covers the
|
||||
// create index pattern button on smaller screens
|
||||
if (await testSubjects.exists('CreateIndexPatternPrompt')) {
|
||||
await testSubjects.click('CreateIndexPatternPrompt euiFlyoutCloseButton');
|
||||
await testSubjects.click('CreateIndexPatternPrompt > euiFlyoutCloseButton');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -208,21 +208,21 @@ export function SettingsPageProvider({ getService, getPageObjects }) {
|
|||
}
|
||||
|
||||
async getFieldNames() {
|
||||
const fieldNameCells = await testSubjects.findAll('editIndexPattern indexedFieldName');
|
||||
const fieldNameCells = await testSubjects.findAll('editIndexPattern > indexedFieldName');
|
||||
return await mapAsync(fieldNameCells, async cell => {
|
||||
return (await cell.getVisibleText()).trim();
|
||||
});
|
||||
}
|
||||
|
||||
async getFieldTypes() {
|
||||
const fieldNameCells = await testSubjects.findAll('editIndexPattern indexedFieldType');
|
||||
const fieldNameCells = await testSubjects.findAll('editIndexPattern > indexedFieldType');
|
||||
return await mapAsync(fieldNameCells, async cell => {
|
||||
return (await cell.getVisibleText()).trim();
|
||||
});
|
||||
}
|
||||
|
||||
async getScriptedFieldLangs() {
|
||||
const fieldNameCells = await testSubjects.findAll('editIndexPattern scriptedFieldLang');
|
||||
const fieldNameCells = await testSubjects.findAll('editIndexPattern > scriptedFieldLang');
|
||||
return await mapAsync(fieldNameCells, async cell => {
|
||||
return (await cell.getVisibleText()).trim();
|
||||
});
|
||||
|
|
|
@ -595,12 +595,12 @@ export function VisualizePageProvider({ getService, getPageObjects, updateBaseli
|
|||
}
|
||||
|
||||
async setSize(newValue, aggId) {
|
||||
const dataTestSubj = aggId ? `visEditorAggAccordion${aggId} sizeParamEditor` : 'sizeParamEditor';
|
||||
const dataTestSubj = aggId ? `visEditorAggAccordion${aggId} > sizeParamEditor` : 'sizeParamEditor';
|
||||
await testSubjects.setValue(dataTestSubj, String(newValue));
|
||||
}
|
||||
|
||||
async toggleDisabledAgg(agg) {
|
||||
await testSubjects.click(`visEditorAggAccordion${agg} toggleDisableAggregationBtn`);
|
||||
await testSubjects.click(`visEditorAggAccordion${agg} > ~toggleDisableAggregationBtn`);
|
||||
await PageObjects.header.waitUntilLoadingHasFinished();
|
||||
}
|
||||
|
||||
|
@ -610,11 +610,11 @@ export function VisualizePageProvider({ getService, getPageObjects, updateBaseli
|
|||
}
|
||||
|
||||
async toggleOtherBucket(agg = 2) {
|
||||
return await testSubjects.click(`visEditorAggAccordion${agg} otherBucketSwitch`);
|
||||
return await testSubjects.click(`visEditorAggAccordion${agg} > otherBucketSwitch`);
|
||||
}
|
||||
|
||||
async toggleMissingBucket(agg = 2) {
|
||||
return await testSubjects.click(`visEditorAggAccordion${agg} missingBucketSwitch`);
|
||||
return await testSubjects.click(`visEditorAggAccordion${agg} > missingBucketSwitch`);
|
||||
}
|
||||
|
||||
async isApplyEnabled() {
|
||||
|
@ -1273,7 +1273,7 @@ export function VisualizePageProvider({ getService, getPageObjects, updateBaseli
|
|||
}
|
||||
|
||||
async removeDimension(agg) {
|
||||
await testSubjects.click(`visEditorAggAccordion${agg} removeDimensionBtn`);
|
||||
await testSubjects.click(`visEditorAggAccordion${agg} > removeDimensionBtn`);
|
||||
}
|
||||
|
||||
async setFilterParams({ aggNth = 0, indexPattern, field }) {
|
||||
|
|
|
@ -166,11 +166,11 @@ export function ComboBoxProvider({ getService, getPageObjects }: FtrProviderCont
|
|||
const menu = await retry.try(async () => {
|
||||
await testSubjects.click(comboBoxSelector);
|
||||
await this.waitForOptionsListLoading(comboBox);
|
||||
const isOptionsListOpen = await testSubjects.exists('comboBoxOptionsList');
|
||||
const isOptionsListOpen = await testSubjects.exists('~comboBoxOptionsList');
|
||||
if (!isOptionsListOpen) {
|
||||
throw new Error('Combo box options list did not open on click');
|
||||
}
|
||||
return await testSubjects.find('comboBoxOptionsList');
|
||||
return await testSubjects.find('~comboBoxOptionsList');
|
||||
});
|
||||
const optionsText = await menu.getVisibleText();
|
||||
await this.closeOptionsList(comboBox);
|
||||
|
@ -242,7 +242,7 @@ export function ComboBoxProvider({ getService, getPageObjects }: FtrProviderCont
|
|||
* @param comboBoxElement element that wraps up EuiComboBox
|
||||
*/
|
||||
public async closeOptionsList(comboBoxElement: WebElementWrapper): Promise<void> {
|
||||
const isOptionsListOpen = await testSubjects.exists('comboBoxOptionsList');
|
||||
const isOptionsListOpen = await testSubjects.exists('~comboBoxOptionsList');
|
||||
if (isOptionsListOpen) {
|
||||
const input = await comboBoxElement.findByTagName('input');
|
||||
await input.pressKeys(browser.keys.ESCAPE);
|
||||
|
@ -255,7 +255,7 @@ export function ComboBoxProvider({ getService, getPageObjects }: FtrProviderCont
|
|||
* @param comboBoxElement element that wraps up EuiComboBox
|
||||
*/
|
||||
public async openOptionsList(comboBoxElement: WebElementWrapper): Promise<void> {
|
||||
const isOptionsListOpen = await testSubjects.exists('comboBoxOptionsList');
|
||||
const isOptionsListOpen = await testSubjects.exists('~comboBoxOptionsList');
|
||||
if (!isOptionsListOpen) {
|
||||
const toggleBtn = await comboBoxElement.findByCssSelector(
|
||||
'[data-test-subj="comboBoxToggleListButton"]'
|
||||
|
|
|
@ -37,7 +37,7 @@ export function DocTableProvider({ getService, getPageObjects }: FtrProviderCont
|
|||
public async getRowsText() {
|
||||
const table = await this.getTable();
|
||||
const $ = await table.parseDomContent();
|
||||
return $.findTestSubjects('docTableRow')
|
||||
return $.findTestSubjects('~docTableRow')
|
||||
.toArray()
|
||||
.map((row: any) =>
|
||||
$(row)
|
||||
|
@ -96,7 +96,7 @@ export function DocTableProvider({ getService, getPageObjects }: FtrProviderCont
|
|||
public async getFields(options: { isAnchorRow: boolean } = { isAnchorRow: false }) {
|
||||
const table = await this.getTable();
|
||||
const $ = await table.parseDomContent();
|
||||
const rowLocator = options.isAnchorRow ? 'docTableAnchorRow' : 'docTableRow';
|
||||
const rowLocator = options.isAnchorRow ? '~docTableAnchorRow' : '~docTableRow';
|
||||
const rows = $.findTestSubjects(rowLocator).toArray();
|
||||
const fields = rows.map((row: any) =>
|
||||
$(row)
|
||||
|
@ -110,7 +110,7 @@ export function DocTableProvider({ getService, getPageObjects }: FtrProviderCont
|
|||
public async getHeaderFields(): Promise<string[]> {
|
||||
const table = await this.getTable();
|
||||
const $ = await table.parseDomContent();
|
||||
return $.findTestSubjects('docTableHeaderField')
|
||||
return $.findTestSubjects('~docTableHeaderField')
|
||||
.toArray()
|
||||
.map((field: any) =>
|
||||
$(field)
|
||||
|
|
|
@ -34,8 +34,8 @@ export function FilterBarProvider({ getService, getPageObjects }: FtrProviderCon
|
|||
*/
|
||||
public async hasFilter(key: string, value: string, enabled: boolean = true): Promise<boolean> {
|
||||
const filterActivationState = enabled ? 'enabled' : 'disabled';
|
||||
return await testSubjects.exists(
|
||||
`filter & filter-key-${key} & filter-value-${value} & filter-${filterActivationState}`,
|
||||
return testSubjects.exists(
|
||||
`filter filter-${filterActivationState} filter-key-${key} filter-value-${value}`,
|
||||
{
|
||||
allowHidden: true,
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ export function FilterBarProvider({ getService, getPageObjects }: FtrProviderCon
|
|||
* @param key field name
|
||||
*/
|
||||
public async removeFilter(key: string): Promise<void> {
|
||||
await testSubjects.click(`filter & filter-key-${key}`);
|
||||
await testSubjects.click(`~filter & ~filter-key-${key}`);
|
||||
await testSubjects.click(`deleteFilter`);
|
||||
await PageObjects.header.awaitGlobalLoadingIndicatorHidden();
|
||||
}
|
||||
|
@ -69,19 +69,19 @@ export function FilterBarProvider({ getService, getPageObjects }: FtrProviderCon
|
|||
* @param key field name
|
||||
*/
|
||||
public async toggleFilterEnabled(key: string): Promise<void> {
|
||||
await testSubjects.click(`filter & filter-key-${key}`);
|
||||
await testSubjects.click(`~filter & ~filter-key-${key}`);
|
||||
await testSubjects.click(`disableFilter`);
|
||||
await PageObjects.header.awaitGlobalLoadingIndicatorHidden();
|
||||
}
|
||||
|
||||
public async toggleFilterPinned(key: string): Promise<void> {
|
||||
await testSubjects.click(`filter & filter-key-${key}`);
|
||||
await testSubjects.click(`~filter & ~filter-key-${key}`);
|
||||
await testSubjects.click(`pinFilter`);
|
||||
await PageObjects.header.awaitGlobalLoadingIndicatorHidden();
|
||||
}
|
||||
|
||||
public async getFilterCount(): Promise<number> {
|
||||
const filters = await testSubjects.findAll('filter');
|
||||
const filters = await testSubjects.findAll('~filter');
|
||||
return filters.length;
|
||||
}
|
||||
|
||||
|
@ -138,7 +138,7 @@ export function FilterBarProvider({ getService, getPageObjects }: FtrProviderCon
|
|||
* @param value field value
|
||||
*/
|
||||
public async clickEditFilter(key: string, value: string): Promise<void> {
|
||||
await testSubjects.click(`filter & filter-key-${key} & filter-value-${value}`);
|
||||
await testSubjects.click(`~filter & ~filter-key-${key} & ~filter-value-${value}`);
|
||||
await testSubjects.click(`editFilter`);
|
||||
await PageObjects.header.awaitGlobalLoadingIndicatorHidden();
|
||||
}
|
||||
|
@ -147,7 +147,7 @@ export function FilterBarProvider({ getService, getPageObjects }: FtrProviderCon
|
|||
* Returns available phrases in the filter
|
||||
*/
|
||||
public async getFilterEditorSelectedPhrases(): Promise<string[]> {
|
||||
return await comboBox.getComboBoxSelectedOptions('filterParamsComboBox');
|
||||
return await comboBox.getComboBoxSelectedOptions('~filterParamsComboBox');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -25,11 +25,11 @@ export function GlobalNavProvider({ getService }: FtrProviderContext) {
|
|||
|
||||
class GlobalNav {
|
||||
public async moveMouseToLogo(): Promise<void> {
|
||||
await testSubjects.moveMouseTo('headerGlobalNav logo');
|
||||
await testSubjects.moveMouseTo('headerGlobalNav > logo');
|
||||
}
|
||||
|
||||
public async clickLogo(): Promise<void> {
|
||||
return await testSubjects.click('headerGlobalNav logo');
|
||||
return await testSubjects.click('headerGlobalNav > logo');
|
||||
}
|
||||
|
||||
public async exists(): Promise<boolean> {
|
||||
|
@ -37,11 +37,15 @@ export function GlobalNavProvider({ getService }: FtrProviderContext) {
|
|||
}
|
||||
|
||||
public async getFirstBreadcrumb(): Promise<string> {
|
||||
return await testSubjects.getVisibleText('headerGlobalNav breadcrumbs first&breadcrumb');
|
||||
return await testSubjects.getVisibleText(
|
||||
'headerGlobalNav > breadcrumbs > ~breadcrumb & ~first'
|
||||
);
|
||||
}
|
||||
|
||||
public async getLastBreadcrumb(): Promise<string> {
|
||||
return await testSubjects.getVisibleText('headerGlobalNav breadcrumbs last&breadcrumb');
|
||||
return await testSubjects.getVisibleText(
|
||||
'headerGlobalNav > breadcrumbs > ~breadcrumb & ~last'
|
||||
);
|
||||
}
|
||||
|
||||
public async badgeExistsOrFail(expectedLabel: string): Promise<void> {
|
||||
|
|
|
@ -66,10 +66,10 @@ export function SavedQueryManagementComponentProvider({ getService }) {
|
|||
|
||||
async loadSavedQuery(title) {
|
||||
await this.openSavedQueryManagementComponent();
|
||||
await testSubjects.click(`load-saved-query-${title}-button`);
|
||||
await testSubjects.click(`~load-saved-query-${title}-button`);
|
||||
await retry.try(async () => {
|
||||
await this.openSavedQueryManagementComponent();
|
||||
const selectedSavedQueryText = await testSubjects.getVisibleText('saved-query-list-item-selected');
|
||||
const selectedSavedQueryText = await testSubjects.getVisibleText('~saved-query-list-item-selected');
|
||||
expect(selectedSavedQueryText).to.eql(title);
|
||||
});
|
||||
await this.closeSavedQueryManagementComponent();
|
||||
|
@ -77,7 +77,7 @@ export function SavedQueryManagementComponentProvider({ getService }) {
|
|||
|
||||
async deleteSavedQuery(title) {
|
||||
await this.openSavedQueryManagementComponent();
|
||||
await testSubjects.click(`delete-saved-query-${title}-button`);
|
||||
await testSubjects.click(`~delete-saved-query-${title}-button`);
|
||||
await testSubjects.click('confirmModalConfirmButton');
|
||||
}
|
||||
|
||||
|
@ -110,13 +110,13 @@ export function SavedQueryManagementComponentProvider({ getService }) {
|
|||
|
||||
async savedQueryExistOrFail(title) {
|
||||
await this.openSavedQueryManagementComponent();
|
||||
await testSubjects.existOrFail(`load-saved-query-${title}-button`);
|
||||
await testSubjects.existOrFail(`~load-saved-query-${title}-button`);
|
||||
}
|
||||
|
||||
async savedQueryMissingOrFail(title) {
|
||||
await retry.try(async () => {
|
||||
await this.openSavedQueryManagementComponent();
|
||||
await testSubjects.missingOrFail(`load-saved-query-${title}-button`);
|
||||
await testSubjects.missingOrFail(`~load-saved-query-${title}-button`);
|
||||
});
|
||||
await this.closeSavedQueryManagementComponent();
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ describe('LogEntryActionsMenu component', () => {
|
|||
elementWrapper.update();
|
||||
|
||||
expect(
|
||||
elementWrapper.find(`a${testSubject('uptimeLogEntryActionsMenuItem')}`).prop('href')
|
||||
elementWrapper.find(`a${testSubject('~uptimeLogEntryActionsMenuItem')}`).prop('href')
|
||||
).toMatchInlineSnapshot(`"/app/uptime#/?search=(host.ip:HOST_IP)"`);
|
||||
});
|
||||
|
||||
|
@ -65,7 +65,7 @@ describe('LogEntryActionsMenu component', () => {
|
|||
elementWrapper.update();
|
||||
|
||||
expect(
|
||||
elementWrapper.find(`a${testSubject('uptimeLogEntryActionsMenuItem')}`).prop('href')
|
||||
elementWrapper.find(`a${testSubject('~uptimeLogEntryActionsMenuItem')}`).prop('href')
|
||||
).toMatchInlineSnapshot(`"/app/uptime#/?search=(container.id:CONTAINER_ID)"`);
|
||||
});
|
||||
|
||||
|
@ -93,7 +93,7 @@ describe('LogEntryActionsMenu component', () => {
|
|||
elementWrapper.update();
|
||||
|
||||
expect(
|
||||
elementWrapper.find(`a${testSubject('uptimeLogEntryActionsMenuItem')}`).prop('href')
|
||||
elementWrapper.find(`a${testSubject('~uptimeLogEntryActionsMenuItem')}`).prop('href')
|
||||
).toMatchInlineSnapshot(`"/app/uptime#/?search=(kubernetes.pod.uid:POD_UID)"`);
|
||||
});
|
||||
|
||||
|
@ -125,7 +125,7 @@ describe('LogEntryActionsMenu component', () => {
|
|||
elementWrapper.update();
|
||||
|
||||
expect(
|
||||
elementWrapper.find(`a${testSubject('uptimeLogEntryActionsMenuItem')}`).prop('href')
|
||||
elementWrapper.find(`a${testSubject('~uptimeLogEntryActionsMenuItem')}`).prop('href')
|
||||
).toMatchInlineSnapshot(
|
||||
`"/app/uptime#/?search=(container.id:CONTAINER_ID OR host.ip:HOST_IP OR kubernetes.pod.uid:POD_UID)"`
|
||||
);
|
||||
|
@ -156,7 +156,7 @@ describe('LogEntryActionsMenu component', () => {
|
|||
|
||||
expect(
|
||||
elementWrapper
|
||||
.find(`button${testSubject('uptimeLogEntryActionsMenuItem')}`)
|
||||
.find(`button${testSubject('~uptimeLogEntryActionsMenuItem')}`)
|
||||
.prop('disabled')
|
||||
).toEqual(true);
|
||||
});
|
||||
|
@ -187,7 +187,7 @@ describe('LogEntryActionsMenu component', () => {
|
|||
elementWrapper.update();
|
||||
|
||||
expect(
|
||||
elementWrapper.find(`a${testSubject('apmLogEntryActionsMenuItem')}`).prop('href')
|
||||
elementWrapper.find(`a${testSubject('~apmLogEntryActionsMenuItem')}`).prop('href')
|
||||
).toMatchInlineSnapshot(
|
||||
`"/app/apm#/traces?kuery=${encodeURIComponent(
|
||||
'trace.id:1234567'
|
||||
|
@ -223,7 +223,7 @@ describe('LogEntryActionsMenu component', () => {
|
|||
elementWrapper.update();
|
||||
|
||||
expect(
|
||||
elementWrapper.find(`a${testSubject('apmLogEntryActionsMenuItem')}`).prop('href')
|
||||
elementWrapper.find(`a${testSubject('~apmLogEntryActionsMenuItem')}`).prop('href')
|
||||
).toMatchInlineSnapshot(
|
||||
`"/app/apm#/traces?kuery=${encodeURIComponent(
|
||||
'trace.id:1234567'
|
||||
|
@ -255,7 +255,7 @@ describe('LogEntryActionsMenu component', () => {
|
|||
elementWrapper.update();
|
||||
|
||||
expect(
|
||||
elementWrapper.find(`button${testSubject('apmLogEntryActionsMenuItem')}`).prop('disabled')
|
||||
elementWrapper.find(`button${testSubject('~apmLogEntryActionsMenuItem')}`).prop('disabled')
|
||||
).toEqual(true);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -16,7 +16,7 @@ export default function canvasSmokeTest({ getService, getPageObjects }) {
|
|||
|
||||
describe('smoke test', function () {
|
||||
this.tags('smoke');
|
||||
const workpadListSelector = 'canvasWorkpadLoaderTable canvasWorkpadLoaderWorkpad';
|
||||
const workpadListSelector = 'canvasWorkpadLoaderTable > canvasWorkpadLoaderWorkpad';
|
||||
const testWorkpadId = 'workpad-1705f884-6224-47de-ba49-ca224fe6ec31';
|
||||
|
||||
before(async () => {
|
||||
|
@ -58,7 +58,7 @@ export default function canvasSmokeTest({ getService, getPageObjects }) {
|
|||
await retry.try(async () => {
|
||||
// check for elements on the page
|
||||
const elements = await testSubjects.findAll(
|
||||
'canvasWorkpadPage canvasWorkpadPageElementContent'
|
||||
'canvasWorkpadPage > canvasWorkpadPageElementContent'
|
||||
);
|
||||
expect(elements).to.have.length(4);
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ export default function codeIntelligenceFunctionalTests({
|
|||
|
||||
describe('Code Intelligence', () => {
|
||||
describe('Code intelligence in source view page', () => {
|
||||
const repositoryListSelector = 'codeRepositoryList codeRepositoryItem';
|
||||
const repositoryListSelector = 'codeRepositoryList > codeRepositoryItem';
|
||||
const testGoToDefinition = async () => {
|
||||
await retry.try(async () => {
|
||||
expect(await exists('codeSourceViewer')).to.be(true);
|
||||
|
|
|
@ -30,7 +30,7 @@ export default function exploreRepositoryFunctionalTests({
|
|||
describe.skip('Explore Repository', function() {
|
||||
this.tags('smoke');
|
||||
describe('Explore a repository', () => {
|
||||
const repositoryListSelector = 'codeRepositoryList codeRepositoryItem';
|
||||
const repositoryListSelector = 'codeRepositoryList > codeRepositoryItem';
|
||||
|
||||
before(async () => {
|
||||
await repoLoad(
|
||||
|
|
|
@ -24,7 +24,7 @@ export default function exploreRepositoryFunctionalTests({
|
|||
// FLAKY: https://github.com/elastic/kibana/issues/45079
|
||||
describe.skip('File Tree', function() {
|
||||
this.tags('smoke');
|
||||
const repositoryListSelector = 'codeRepositoryList codeRepositoryItem';
|
||||
const repositoryListSelector = 'codeRepositoryList > codeRepositoryItem';
|
||||
|
||||
before(async () => {
|
||||
await repoLoad(
|
||||
|
|
|
@ -29,7 +29,7 @@ export default function manageRepositoriesFunctionalTests({
|
|||
|
||||
describe('History', function() {
|
||||
this.tags('smoke');
|
||||
const repositoryListSelector = 'codeRepositoryList codeRepositoryItem';
|
||||
const repositoryListSelector = 'codeRepositoryList > codeRepositoryItem';
|
||||
|
||||
describe('browser history can go back while exploring code app', () => {
|
||||
let driver: any;
|
||||
|
|
|
@ -19,7 +19,7 @@ export default function manageRepositoriesFunctionalTests({
|
|||
|
||||
describe('Manage Repositories', function() {
|
||||
this.tags('smoke');
|
||||
const repositoryListSelector = 'codeRepositoryList codeRepositoryItem';
|
||||
const repositoryListSelector = 'codeRepositoryList > codeRepositoryItem';
|
||||
|
||||
describe('Manage Repositories', () => {
|
||||
before(async () => {
|
||||
|
|
|
@ -16,10 +16,11 @@ export default function searchFunctonalTests({ getService, getPageObjects }: Ftr
|
|||
|
||||
describe('Search', function() {
|
||||
this.tags('smoke');
|
||||
const symbolTypeaheadListSelector = 'codeTypeaheadList-symbol codeTypeaheadItem';
|
||||
const fileTypeaheadListSelector = 'codeTypeaheadList-file codeTypeaheadItem';
|
||||
const searchResultListSelector = 'codeSearchResultList codeSearchResultFileItem';
|
||||
const languageFilterListSelector = 'codeSearchLanguageFilterList codeSearchLanguageFilterItem';
|
||||
const symbolTypeaheadListSelector = 'codeTypeaheadList-symbol > codeTypeaheadItem';
|
||||
const fileTypeaheadListSelector = 'codeTypeaheadList-file > codeTypeaheadItem';
|
||||
const searchResultListSelector = 'codeSearchResultList > codeSearchResultFileItem';
|
||||
const languageFilterListSelector =
|
||||
'codeSearchLanguageFilterList > codeSearchLanguageFilterItem';
|
||||
|
||||
describe('Code Search', () => {
|
||||
before(async () => {
|
||||
|
|
|
@ -17,7 +17,7 @@ export default function testWithSecurity({ getService, getPageObjects }: FtrProv
|
|||
const dummyPassword = '123321';
|
||||
const codeAdmin = 'codeAdmin';
|
||||
const codeUser = 'codeUser';
|
||||
const repositoryListSelector = 'codeRepositoryList codeRepositoryItem';
|
||||
const repositoryListSelector = 'codeRepositoryList > codeRepositoryItem';
|
||||
const manageButtonSelectors = ['indexRepositoryButton', 'deleteRepositoryButton'];
|
||||
const log = getService('log');
|
||||
const security = getService('security');
|
||||
|
|
|
@ -84,7 +84,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
|
|||
it('allows creating a new workspace', async () => {
|
||||
await PageObjects.common.navigateToApp('graph');
|
||||
await testSubjects.click('graphCreateWorkspacePromptButton');
|
||||
const breadcrumb = await testSubjects.find('graphCurrentWorkspaceBreadcrumb');
|
||||
const breadcrumb = await testSubjects.find('~graphCurrentWorkspaceBreadcrumb');
|
||||
expect(await breadcrumb.getVisibleText()).to.equal('Unsaved workspace');
|
||||
});
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
|
|||
basePath: '/s/custom_space',
|
||||
});
|
||||
await testSubjects.click('graphCreateWorkspacePromptButton');
|
||||
const breadcrumb = await testSubjects.find('graphCurrentWorkspaceBreadcrumb');
|
||||
const breadcrumb = await testSubjects.find('~graphCurrentWorkspaceBreadcrumb');
|
||||
expect(await breadcrumb.getVisibleText()).to.equal('Unsaved workspace');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -157,7 +157,7 @@ export default function ({ getService, getPageObjects }) {
|
|||
.to.be(`${tableData[index].alertIcon} ${tableData[index].alertText}`);
|
||||
});
|
||||
|
||||
await PageObjects.monitoring.clickBreadcrumb('breadcrumbClusters');
|
||||
await PageObjects.monitoring.clickBreadcrumb('~breadcrumbClusters');
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -183,7 +183,7 @@ export default function ({ getService, getPageObjects }) {
|
|||
await alertAction.click();
|
||||
expect(await indices.isOnListing()).to.be(true);
|
||||
|
||||
await PageObjects.monitoring.clickBreadcrumb('breadcrumbClusters');
|
||||
await PageObjects.monitoring.clickBreadcrumb('~breadcrumbClusters');
|
||||
});
|
||||
|
||||
it('with alert on listing table page', async () => {
|
||||
|
@ -194,7 +194,7 @@ export default function ({ getService, getPageObjects }) {
|
|||
await alertAction.click();
|
||||
expect(await indices.isOnListing()).to.be(true);
|
||||
|
||||
await PageObjects.monitoring.clickBreadcrumb('breadcrumbClusters');
|
||||
await PageObjects.monitoring.clickBreadcrumb('~breadcrumbClusters');
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -131,7 +131,7 @@ export default function ({ getService, getPageObjects }) {
|
|||
expect(await clusterOverview.isOnClusterOverview()).to.be(true);
|
||||
expect(await clusterOverview.getClusterName()).to.be('production');
|
||||
|
||||
await PageObjects.monitoring.clickBreadcrumb('breadcrumbClusters'); // reset for next test
|
||||
await PageObjects.monitoring.clickBreadcrumb('~breadcrumbClusters'); // reset for next test
|
||||
});
|
||||
|
||||
});
|
||||
|
|
|
@ -16,7 +16,7 @@ export default function ({ getService, getPageObjects }) {
|
|||
describe('Elasticsearch index detail', () => {
|
||||
|
||||
afterEach(async () => {
|
||||
await PageObjects.monitoring.clickBreadcrumb('breadcrumbEsIndices'); // return back for next test
|
||||
await PageObjects.monitoring.clickBreadcrumb('~breadcrumbEsIndices'); // return back for next test
|
||||
await indicesList.clearFilter();
|
||||
});
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ export default function ({ getService, getPageObjects }) {
|
|||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await PageObjects.monitoring.clickBreadcrumb('breadcrumbEsNodes'); // return back for next test
|
||||
await PageObjects.monitoring.clickBreadcrumb('~breadcrumbEsNodes'); // return back for next test
|
||||
});
|
||||
|
||||
it('should show node summary of master node with 20 indices and 38 shards', async () => {
|
||||
|
|
|
@ -32,7 +32,7 @@ export default function ({ getService, getPageObjects }) {
|
|||
describe('Shard Allocation Per Node', () => {
|
||||
before(async () => {
|
||||
// start on cluster overview
|
||||
await PageObjects.monitoring.clickBreadcrumb('breadcrumbClusters');
|
||||
await PageObjects.monitoring.clickBreadcrumb('~breadcrumbClusters');
|
||||
|
||||
await PageObjects.header.waitUntilLoadingHasFinished();
|
||||
|
||||
|
@ -42,7 +42,7 @@ export default function ({ getService, getPageObjects }) {
|
|||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await PageObjects.monitoring.clickBreadcrumb('breadcrumbEsNodes'); // return back for next test
|
||||
await PageObjects.monitoring.clickBreadcrumb('~breadcrumbEsNodes'); // return back for next test
|
||||
});
|
||||
|
||||
it('master-data node with 20 indices and 38 shards', async () => {
|
||||
|
@ -99,7 +99,7 @@ export default function ({ getService, getPageObjects }) {
|
|||
describe('Shard Allocation Per Index', () => {
|
||||
before(async () => {
|
||||
// start on cluster overview
|
||||
await PageObjects.monitoring.clickBreadcrumb('breadcrumbClusters');
|
||||
await PageObjects.monitoring.clickBreadcrumb('~breadcrumbClusters');
|
||||
|
||||
// go to indices listing
|
||||
await overview.clickEsIndices();
|
||||
|
@ -107,7 +107,7 @@ export default function ({ getService, getPageObjects }) {
|
|||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await PageObjects.monitoring.clickBreadcrumb('breadcrumbEsIndices'); // return back for next test
|
||||
await PageObjects.monitoring.clickBreadcrumb('~breadcrumbEsIndices'); // return back for next test
|
||||
});
|
||||
|
||||
it('green status index with full shard allocation', async () => {
|
||||
|
|
|
@ -539,7 +539,7 @@ export function GisPageProvider({ getService, getPageObjects }) {
|
|||
}
|
||||
|
||||
async openInspectorMapView() {
|
||||
await inspector.openInspectorView('inspectorViewChooserMap');
|
||||
await inspector.openInspectorView('~inspectorViewChooserMap');
|
||||
}
|
||||
|
||||
// Method should only be used when multiple requests are expected
|
||||
|
|
|
@ -157,7 +157,7 @@ export function ReportingPageProvider({ getService, getPageObjects }) {
|
|||
});
|
||||
// Close toast so it doesn't obscure the UI.
|
||||
if (isToastPresent) {
|
||||
await testSubjects.click('completeReportSuccess toastCloseButton');
|
||||
await testSubjects.click('completeReportSuccess > toastCloseButton');
|
||||
}
|
||||
|
||||
return isToastPresent;
|
||||
|
|
|
@ -14,13 +14,13 @@ export function GrokDebuggerProvider({ getService }) {
|
|||
// test subject selectors
|
||||
const SUBJ_CONTAINER = 'grokDebugger';
|
||||
|
||||
const SUBJ_UI_ACE_EVENT_INPUT = `${SUBJ_CONTAINER} aceEventInput codeEditorContainer`;
|
||||
const SUBJ_UI_ACE_PATTERN_INPUT = `${SUBJ_CONTAINER} acePatternInput codeEditorContainer`;
|
||||
const SUBJ_UI_ACE_CUSTOM_PATTERNS_INPUT = `${SUBJ_CONTAINER} aceCustomPatternsInput codeEditorContainer`;
|
||||
const SUBJ_UI_ACE_EVENT_OUTPUT = `${SUBJ_CONTAINER} aceEventOutput codeEditorContainer`;
|
||||
const SUBJ_UI_ACE_EVENT_INPUT = `${SUBJ_CONTAINER} > aceEventInput > codeEditorContainer`;
|
||||
const SUBJ_UI_ACE_PATTERN_INPUT = `${SUBJ_CONTAINER} > acePatternInput > codeEditorContainer`;
|
||||
const SUBJ_UI_ACE_CUSTOM_PATTERNS_INPUT = `${SUBJ_CONTAINER} > aceCustomPatternsInput > codeEditorContainer`;
|
||||
const SUBJ_UI_ACE_EVENT_OUTPUT = `${SUBJ_CONTAINER} > aceEventOutput > codeEditorContainer`;
|
||||
|
||||
const SUBJ_BTN_TOGGLE_CUSTOM_PATTERNS_INPUT = `${SUBJ_CONTAINER} btnToggleCustomPatternsInput`;
|
||||
const SUBJ_BTN_SIMULATE = `${SUBJ_CONTAINER} btnSimulate`;
|
||||
const SUBJ_BTN_TOGGLE_CUSTOM_PATTERNS_INPUT = `${SUBJ_CONTAINER} > btnToggleCustomPatternsInput`;
|
||||
const SUBJ_BTN_SIMULATE = `${SUBJ_CONTAINER} > btnSimulate`;
|
||||
|
||||
return new class GrokDebugger {
|
||||
async clickSimulate() {
|
||||
|
|
|
@ -16,7 +16,7 @@ export function MachineLearningJobManagementProvider({ getService }: FtrProvider
|
|||
},
|
||||
|
||||
async assertJobTableExists() {
|
||||
await testSubjects.existOrFail('mlJobListTable');
|
||||
await testSubjects.existOrFail('~mlJobListTable');
|
||||
},
|
||||
|
||||
async assertCreateNewJobButtonExists() {
|
||||
|
@ -24,7 +24,7 @@ export function MachineLearningJobManagementProvider({ getService }: FtrProvider
|
|||
},
|
||||
|
||||
async assertJobStatsBarExists() {
|
||||
await testSubjects.existOrFail('mlJobStatsBar');
|
||||
await testSubjects.existOrFail('~mlJobStatsBar');
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
|
@ -13,11 +13,11 @@ export function MachineLearningJobTableProvider({ getService }: FtrProviderConte
|
|||
|
||||
return new (class MlJobTable {
|
||||
public async parseJobTable() {
|
||||
const table = await testSubjects.find('mlJobListTable');
|
||||
const table = await testSubjects.find('~mlJobListTable');
|
||||
const $ = await table.parseDomContent();
|
||||
const rows = [];
|
||||
|
||||
for (const tr of $.findTestSubjects('row').toArray()) {
|
||||
for (const tr of $.findTestSubjects('~row').toArray()) {
|
||||
const $tr = $(tr);
|
||||
|
||||
const $description = $tr.findTestSubject('description').find('.euiTableCellContent');
|
||||
|
@ -83,10 +83,10 @@ export function MachineLearningJobTableProvider({ getService }: FtrProviderConte
|
|||
await testSubjects.click(this.detailsSelector(jobId, 'tab-counts'));
|
||||
|
||||
const countsTable = await testSubjects.find(
|
||||
this.detailsSelector(jobId, 'details-counts counts')
|
||||
this.detailsSelector(jobId, 'details-counts > counts')
|
||||
);
|
||||
const modelSizeStatsTable = await testSubjects.find(
|
||||
this.detailsSelector(jobId, 'details-counts modelSizeStats')
|
||||
this.detailsSelector(jobId, 'details-counts > modelSizeStats')
|
||||
);
|
||||
|
||||
// parse a table by reading each row
|
||||
|
@ -119,13 +119,13 @@ export function MachineLearningJobTableProvider({ getService }: FtrProviderConte
|
|||
}
|
||||
|
||||
public rowSelector(jobId: string, subSelector?: string) {
|
||||
const row = `mlJobListTable row-${jobId}`;
|
||||
return !subSelector ? row : `${row} ${subSelector}`;
|
||||
const row = `~mlJobListTable > ~row-${jobId}`;
|
||||
return !subSelector ? row : `${row} > ${subSelector}`;
|
||||
}
|
||||
|
||||
public detailsSelector(jobId: string, subSelector?: string) {
|
||||
const row = `mlJobListTable details-${jobId}`;
|
||||
return !subSelector ? row : `${row} ${subSelector}`;
|
||||
const row = `~mlJobListTable > ~details-${jobId}`;
|
||||
return !subSelector ? row : `${row} > ${subSelector}`;
|
||||
}
|
||||
|
||||
public async withDetailsOpen<T>(jobId: string, block: () => Promise<T>): Promise<T> {
|
||||
|
@ -159,12 +159,12 @@ export function MachineLearningJobTableProvider({ getService }: FtrProviderConte
|
|||
public async waitForJobsToLoad() {
|
||||
await retry.waitFor(
|
||||
'jobs table to exist',
|
||||
async () => await testSubjects.exists('mlJobListTable')
|
||||
async () => await testSubjects.exists('~mlJobListTable')
|
||||
);
|
||||
|
||||
await retry.waitFor(
|
||||
'jobs table to be done loading',
|
||||
async () => await testSubjects.exists('mlJobListTable&loaded')
|
||||
async () => await testSubjects.exists('mlJobListTable loaded')
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -38,12 +38,12 @@ export function MachineLearningJobWizardCommonProvider({ getService }: FtrProvid
|
|||
},
|
||||
|
||||
async assertAggAndFieldInputExists() {
|
||||
await testSubjects.existOrFail('mlJobWizardAggSelection comboBoxInput');
|
||||
await testSubjects.existOrFail('mlJobWizardAggSelection > comboBoxInput');
|
||||
},
|
||||
|
||||
async assertAggAndFieldSelection(identifier: string) {
|
||||
const comboBoxSelectedOptions = await comboBox.getComboBoxSelectedOptions(
|
||||
'mlJobWizardAggSelection comboBoxInput'
|
||||
'mlJobWizardAggSelection > comboBoxInput'
|
||||
);
|
||||
expect(comboBoxSelectedOptions.length).to.eql(1);
|
||||
expect(comboBoxSelectedOptions[0]).to.eql(identifier);
|
||||
|
@ -82,19 +82,19 @@ export function MachineLearningJobWizardCommonProvider({ getService }: FtrProvid
|
|||
},
|
||||
|
||||
async assertJobGroupInputExists() {
|
||||
await testSubjects.existOrFail('mlJobWizardComboBoxJobGroups comboBoxInput');
|
||||
await testSubjects.existOrFail('mlJobWizardComboBoxJobGroups > comboBoxInput');
|
||||
},
|
||||
|
||||
async assertJobGroupSelection(jobGroups: string[]) {
|
||||
const comboBoxSelectedOptions = await comboBox.getComboBoxSelectedOptions(
|
||||
'mlJobWizardComboBoxJobGroups comboBoxInput'
|
||||
'mlJobWizardComboBoxJobGroups > comboBoxInput'
|
||||
);
|
||||
expect(comboBoxSelectedOptions).to.eql(jobGroups);
|
||||
},
|
||||
|
||||
async assertModelPlotSwitchExists() {
|
||||
await this.ensureAdvancedSectionOpen();
|
||||
await testSubjects.existOrFail('mlJobWizardAdvancedSection mlJobWizardSwitchModelPlot', {
|
||||
await testSubjects.existOrFail('mlJobWizardAdvancedSection > mlJobWizardSwitchModelPlot', {
|
||||
allowHidden: true,
|
||||
});
|
||||
},
|
||||
|
@ -102,7 +102,7 @@ export function MachineLearningJobWizardCommonProvider({ getService }: FtrProvid
|
|||
async assertDedicatedIndexSwitchExists() {
|
||||
await this.ensureAdvancedSectionOpen();
|
||||
await testSubjects.existOrFail(
|
||||
'mlJobWizardAdvancedSection mlJobWizardSwitchUseDedicatedIndex',
|
||||
'mlJobWizardAdvancedSection > mlJobWizardSwitchUseDedicatedIndex',
|
||||
{ allowHidden: true }
|
||||
);
|
||||
},
|
||||
|
@ -120,43 +120,45 @@ export function MachineLearningJobWizardCommonProvider({ getService }: FtrProvid
|
|||
async getDedicatedIndexSwitchCheckedState() {
|
||||
await this.ensureAdvancedSectionOpen();
|
||||
return await testSubjects.isSelected(
|
||||
'mlJobWizardAdvancedSection mlJobWizardSwitchUseDedicatedIndex'
|
||||
'mlJobWizardAdvancedSection > mlJobWizardSwitchUseDedicatedIndex'
|
||||
);
|
||||
},
|
||||
|
||||
async assertModelMemoryLimitInputExists() {
|
||||
await this.ensureAdvancedSectionOpen();
|
||||
await testSubjects.existOrFail('mlJobWizardAdvancedSection mlJobWizardInputModelMemoryLimit');
|
||||
await testSubjects.existOrFail(
|
||||
'mlJobWizardAdvancedSection > mlJobWizardInputModelMemoryLimit'
|
||||
);
|
||||
},
|
||||
|
||||
async assertModelMemoryLimitValue(expectedValue: string) {
|
||||
await this.ensureAdvancedSectionOpen();
|
||||
const actualModelMemoryLimit = await testSubjects.getAttribute(
|
||||
'mlJobWizardAdvancedSection mlJobWizardInputModelMemoryLimit',
|
||||
'mlJobWizardAdvancedSection > mlJobWizardInputModelMemoryLimit',
|
||||
'value'
|
||||
);
|
||||
expect(actualModelMemoryLimit).to.eql(expectedValue);
|
||||
},
|
||||
|
||||
async assertMultiMetricSplitFieldInputExists() {
|
||||
await testSubjects.existOrFail('mlJobWizardSplitFieldSelection comboBoxInput');
|
||||
await testSubjects.existOrFail('mlJobWizardSplitFieldSelection > comboBoxInput');
|
||||
},
|
||||
|
||||
async assertMultiMetricSplitFieldSelection(identifier: string) {
|
||||
const comboBoxSelectedOptions = await comboBox.getComboBoxSelectedOptions(
|
||||
'mlJobWizardSplitFieldSelection comboBoxInput'
|
||||
'mlJobWizardSplitFieldSelection > comboBoxInput'
|
||||
);
|
||||
expect(comboBoxSelectedOptions.length).to.eql(1);
|
||||
expect(comboBoxSelectedOptions[0]).to.eql(identifier);
|
||||
},
|
||||
|
||||
async assertInfluencerInputExists() {
|
||||
await testSubjects.existOrFail('mlJobWizardInfluencerSelection comboBoxInput');
|
||||
await testSubjects.existOrFail('mlJobWizardInfluencerSelection > comboBoxInput');
|
||||
},
|
||||
|
||||
async assertInfluencerSelection(influencers: string[]) {
|
||||
const comboBoxSelectedOptions = await comboBox.getComboBoxSelectedOptions(
|
||||
'mlJobWizardInfluencerSelection comboBoxInput'
|
||||
'mlJobWizardInfluencerSelection > comboBoxInput'
|
||||
);
|
||||
expect(comboBoxSelectedOptions).to.eql(influencers);
|
||||
},
|
||||
|
@ -166,28 +168,28 @@ export function MachineLearningJobWizardCommonProvider({ getService }: FtrProvid
|
|||
detectorPosition: number,
|
||||
chartType: string
|
||||
) {
|
||||
await testSubjects.existOrFail(`detector&${detectorPosition}`);
|
||||
await testSubjects.existOrFail(`detector&${detectorPosition} detectorTitle`);
|
||||
await testSubjects.existOrFail(`detector ${detectorPosition}`);
|
||||
await testSubjects.existOrFail(`detector ${detectorPosition} > detectorTitle`);
|
||||
expect(
|
||||
await testSubjects.getVisibleText(`detector&${detectorPosition} detectorTitle`)
|
||||
await testSubjects.getVisibleText(`detector ${detectorPosition} > detectorTitle`)
|
||||
).to.eql(aggAndFieldIdentifier);
|
||||
await testSubjects.existOrFail(`detector&${detectorPosition} mlAnomalyChart&${chartType}`);
|
||||
await testSubjects.existOrFail(`detector ${detectorPosition} > mlAnomalyChart ${chartType}`);
|
||||
},
|
||||
|
||||
async assertDetectorSplitExists(splitField: string) {
|
||||
await testSubjects.existOrFail(`dataSplit dataSplitTitle&${splitField}`);
|
||||
await testSubjects.existOrFail(`dataSplit splitCard&front`);
|
||||
await testSubjects.existOrFail(`dataSplit splitCard&back`);
|
||||
await testSubjects.existOrFail(`dataSplit > dataSplitTitle ${splitField}`);
|
||||
await testSubjects.existOrFail(`dataSplit > splitCard front`);
|
||||
await testSubjects.existOrFail(`dataSplit > splitCard back`);
|
||||
},
|
||||
|
||||
async assertDetectorSplitFrontCardTitle(frontCardTitle: string) {
|
||||
expect(await testSubjects.getVisibleText(`dataSplit splitCard&front splitCardTitle`)).to.eql(
|
||||
frontCardTitle
|
||||
);
|
||||
expect(
|
||||
await testSubjects.getVisibleText(`dataSplit > splitCard front > splitCardTitle`)
|
||||
).to.eql(frontCardTitle);
|
||||
},
|
||||
|
||||
async assertDetectorSplitNumberOfBackCards(numberOfBackCards: number) {
|
||||
expect(await testSubjects.findAll(`dataSplit splitCard&back`)).to.have.length(
|
||||
expect(await testSubjects.findAll(`dataSplit > splitCard back`)).to.have.length(
|
||||
numberOfBackCards
|
||||
);
|
||||
},
|
||||
|
@ -205,7 +207,7 @@ export function MachineLearningJobWizardCommonProvider({ getService }: FtrProvid
|
|||
},
|
||||
|
||||
async selectAggAndField(identifier: string) {
|
||||
await comboBox.set('mlJobWizardAggSelection comboBoxInput', identifier);
|
||||
await comboBox.set('mlJobWizardAggSelection > comboBoxInput', identifier);
|
||||
},
|
||||
|
||||
async setBucketSpan(bucketSpan: string) {
|
||||
|
@ -221,15 +223,15 @@ export function MachineLearningJobWizardCommonProvider({ getService }: FtrProvid
|
|||
},
|
||||
|
||||
async addJobGroup(jobGroup: string) {
|
||||
await comboBox.setCustom('mlJobWizardComboBoxJobGroups comboBoxInput', jobGroup);
|
||||
await comboBox.setCustom('mlJobWizardComboBoxJobGroups > comboBoxInput', jobGroup);
|
||||
},
|
||||
|
||||
async selectMultiMetricSplitField(identifier: string) {
|
||||
await comboBox.set('mlJobWizardSplitFieldSelection comboBoxInput', identifier);
|
||||
await comboBox.set('mlJobWizardSplitFieldSelection > comboBoxInput', identifier);
|
||||
},
|
||||
|
||||
async addInfluencer(influencer: string) {
|
||||
await comboBox.setCustom('mlJobWizardInfluencerSelection comboBoxInput', influencer);
|
||||
await comboBox.setCustom('mlJobWizardInfluencerSelection > comboBoxInput', influencer);
|
||||
},
|
||||
|
||||
async ensureAdvancedSectionOpen() {
|
||||
|
|
|
@ -10,19 +10,19 @@ export function MonitoringBeatDetailProvider({ getService }) {
|
|||
|
||||
const SUBJ_DETAIL_PAGE = 'beatDetailPage';
|
||||
const SUBJ_SUMMARY_01 = 'beatSummaryStatus01';
|
||||
const SUBJ_SUMMARY_NAME = `${SUBJ_SUMMARY_01} name`;
|
||||
const SUBJ_SUMMARY_VERSION = `${SUBJ_SUMMARY_01} version`;
|
||||
const SUBJ_SUMMARY_TYPE = `${SUBJ_SUMMARY_01} type`;
|
||||
const SUBJ_SUMMARY_HOST = `${SUBJ_SUMMARY_01} host`;
|
||||
const SUBJ_SUMMARY_OUTPUT = `${SUBJ_SUMMARY_01} output`;
|
||||
const SUBJ_SUMMARY_CONFIG_RELOADS = `${SUBJ_SUMMARY_01} configReloads`;
|
||||
const SUBJ_SUMMARY_UPTIME = `${SUBJ_SUMMARY_01} uptime`;
|
||||
const SUBJ_SUMMARY_NAME = `${SUBJ_SUMMARY_01} > name`;
|
||||
const SUBJ_SUMMARY_VERSION = `${SUBJ_SUMMARY_01} > version`;
|
||||
const SUBJ_SUMMARY_TYPE = `${SUBJ_SUMMARY_01} > type`;
|
||||
const SUBJ_SUMMARY_HOST = `${SUBJ_SUMMARY_01} > host`;
|
||||
const SUBJ_SUMMARY_OUTPUT = `${SUBJ_SUMMARY_01} > output`;
|
||||
const SUBJ_SUMMARY_CONFIG_RELOADS = `${SUBJ_SUMMARY_01} > configReloads`;
|
||||
const SUBJ_SUMMARY_UPTIME = `${SUBJ_SUMMARY_01} > uptime`;
|
||||
|
||||
const SUBJ_SUMMARY_02 = 'beatSummaryStatus02';
|
||||
const SUBJ_SUMMARY_EVENTS_TOTAL = `${SUBJ_SUMMARY_02} eventsTotal`;
|
||||
const SUBJ_SUMMARY_EVENTS_EMITTED = `${SUBJ_SUMMARY_02} eventsEmitted`;
|
||||
const SUBJ_SUMMARY_EVENTS_DROPPED = `${SUBJ_SUMMARY_02} eventsDropped`;
|
||||
const SUBJ_SUMMARY_BYTES_WRITTEN = `${SUBJ_SUMMARY_02} bytesWritten`;
|
||||
const SUBJ_SUMMARY_EVENTS_TOTAL = `${SUBJ_SUMMARY_02} > eventsTotal`;
|
||||
const SUBJ_SUMMARY_EVENTS_EMITTED = `${SUBJ_SUMMARY_02} > eventsEmitted`;
|
||||
const SUBJ_SUMMARY_EVENTS_DROPPED = `${SUBJ_SUMMARY_02} > eventsDropped`;
|
||||
const SUBJ_SUMMARY_BYTES_WRITTEN = `${SUBJ_SUMMARY_02} > bytesWritten`;
|
||||
|
||||
return new class BeatDetail {
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@ export function MonitoringBeatsListingProvider({ getService, getPageObjects }) {
|
|||
const SUBJ_NO_RECENT_ACTIVITY_MESSAGE = 'noRecentActivityMessage';
|
||||
|
||||
const SUBJ_TABLE_CONTAINER = 'beatsTableContainer';
|
||||
const SUBJ_SEARCH_BAR = `${SUBJ_TABLE_CONTAINER} monitoringTableToolBar`;
|
||||
const SUBJ_INDEX_LINK_PREFIX = `${SUBJ_TABLE_CONTAINER} beatLink-`;
|
||||
const SUBJ_SEARCH_BAR = `${SUBJ_TABLE_CONTAINER} > monitoringTableToolBar`;
|
||||
const SUBJ_INDEX_LINK_PREFIX = `${SUBJ_TABLE_CONTAINER} > beatLink-`;
|
||||
|
||||
return new class BeatsListing {
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ export function MonitoringBeatsSummaryStatusProvider({ getService }) {
|
|||
const testSubjects = getService('testSubjects');
|
||||
|
||||
const SUBJ_SUMMARY = 'beatsSummaryStatus';
|
||||
const SUBJ_TYPES_COUNTS = `${SUBJ_SUMMARY} typeCount`;
|
||||
const SUBJ_TYPES_COUNTS = `${SUBJ_SUMMARY} > typeCount`;
|
||||
|
||||
const SUBJ_TOTAL_EVENTS = `${SUBJ_SUMMARY} totalEvents`;
|
||||
const SUBJ_BYTES_SENT = `${SUBJ_SUMMARY} bytesSent`;
|
||||
const SUBJ_TOTAL_EVENTS = `${SUBJ_SUMMARY} > totalEvents`;
|
||||
const SUBJ_BYTES_SENT = `${SUBJ_SUMMARY} > bytesSent`;
|
||||
|
||||
return new class BeatsSummaryStatus {
|
||||
|
||||
|
|
|
@ -19,14 +19,14 @@ export function MonitoringClusterAlertsProvider({ getService, getPageObjects })
|
|||
const SUBJ_OVERVIEW_ICONS =
|
||||
`[data-test-subj="${SUBJ_OVERVIEW_CLUSTER_ALERTS}"] ` +
|
||||
`[data-test-subj="topAlertItem"] .euiCallOutHeader__title`;
|
||||
const SUBJ_OVERVIEW_TEXTS = `${SUBJ_OVERVIEW_CLUSTER_ALERTS} alertText`;
|
||||
const SUBJ_OVERVIEW_ACTIONS = `${SUBJ_OVERVIEW_CLUSTER_ALERTS} alertAction`;
|
||||
const SUBJ_OVERVIEW_VIEW_ALL = `${SUBJ_OVERVIEW_CLUSTER_ALERTS} viewAllAlerts`;
|
||||
const SUBJ_OVERVIEW_TEXTS = `${SUBJ_OVERVIEW_CLUSTER_ALERTS} > alertText`;
|
||||
const SUBJ_OVERVIEW_ACTIONS = `${SUBJ_OVERVIEW_CLUSTER_ALERTS} > alertAction`;
|
||||
const SUBJ_OVERVIEW_VIEW_ALL = `${SUBJ_OVERVIEW_CLUSTER_ALERTS} > viewAllAlerts`;
|
||||
|
||||
const SUBJ_TABLE_BODY = 'alertsTableContainer';
|
||||
const SUBJ_TABLE_ICONS = `${SUBJ_TABLE_BODY} alertIcon`;
|
||||
const SUBJ_TABLE_TEXTS = `${SUBJ_TABLE_BODY} alertText`;
|
||||
const SUBJ_TABLE_ACTIONS = `${SUBJ_TABLE_BODY} alertAction`;
|
||||
const SUBJ_TABLE_ICONS = `${SUBJ_TABLE_BODY} > alertIcon`;
|
||||
const SUBJ_TABLE_TEXTS = `${SUBJ_TABLE_BODY} > alertText`;
|
||||
const SUBJ_TABLE_ACTIONS = `${SUBJ_TABLE_BODY} > alertAction`;
|
||||
|
||||
return new class ClusterAlerts {
|
||||
|
||||
|
@ -56,7 +56,7 @@ export function MonitoringClusterAlertsProvider({ getService, getPageObjects })
|
|||
*/
|
||||
|
||||
getOverviewAlerts() {
|
||||
return testSubjects.findAll(`${SUBJ_OVERVIEW_CLUSTER_ALERTS} topAlertItem`);
|
||||
return testSubjects.findAll(`${SUBJ_OVERVIEW_CLUSTER_ALERTS} > topAlertItem`);
|
||||
}
|
||||
|
||||
async getOverviewAlertsAll() {
|
||||
|
|
|
@ -10,10 +10,10 @@ export function MonitoringClusterListProvider({ getService, getPageObjects }) {
|
|||
const PageObjects = getPageObjects(['monitoring']);
|
||||
|
||||
const SUBJ_TABLE_CONTAINER = 'clusterTableContainer';
|
||||
const SUBJ_TABLE_NO_DATA = `${SUBJ_TABLE_CONTAINER} monitoringTableNoData`;
|
||||
const SUBJ_SEARCH_BAR = `${SUBJ_TABLE_CONTAINER} monitoringTableToolBar`;
|
||||
const SUBJ_TABLE_NO_DATA = `${SUBJ_TABLE_CONTAINER} > monitoringTableNoData`;
|
||||
const SUBJ_SEARCH_BAR = `${SUBJ_TABLE_CONTAINER} > monitoringTableToolBar`;
|
||||
|
||||
const SUBJ_CLUSTER_ROW_PREFIX = `${SUBJ_TABLE_CONTAINER} clusterRow_`;
|
||||
const SUBJ_CLUSTER_ROW_PREFIX = `${SUBJ_TABLE_CONTAINER} > clusterRow_`;
|
||||
|
||||
return new class ClusterList {
|
||||
|
||||
|
@ -42,31 +42,31 @@ export function MonitoringClusterListProvider({ getService, getPageObjects }) {
|
|||
}
|
||||
|
||||
getClusterLink(clusterUuid) {
|
||||
return testSubjects.find(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} clusterLink`);
|
||||
return testSubjects.find(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} > clusterLink`);
|
||||
}
|
||||
getClusterName(clusterUuid) {
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} clusterLink`);
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} > clusterLink`);
|
||||
}
|
||||
getClusterStatus(clusterUuid) {
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} alertsStatus`);
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} > alertsStatus`);
|
||||
}
|
||||
getClusterNodesCount(clusterUuid) {
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} nodesCount`);
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} > nodesCount`);
|
||||
}
|
||||
getClusterIndicesCount(clusterUuid) {
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} indicesCount`);
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} > indicesCount`);
|
||||
}
|
||||
getClusterDataSize(clusterUuid) {
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} dataSize`);
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} > dataSize`);
|
||||
}
|
||||
getClusterLogstashCount(clusterUuid) {
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} logstashCount`);
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} > logstashCount`);
|
||||
}
|
||||
getClusterKibanaCount(clusterUuid) {
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} kibanaCount`);
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} > kibanaCount`);
|
||||
}
|
||||
getClusterLicense(clusterUuid) {
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} clusterLicense`);
|
||||
return testSubjects.getVisibleText(`${SUBJ_CLUSTER_ROW_PREFIX}${clusterUuid} > clusterLicense`);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -12,46 +12,46 @@ export function MonitoringClusterOverviewProvider({ getService }) {
|
|||
|
||||
const SUBJ_CLUSTER_ALERTS = `clusterAlertsContainer`;
|
||||
const SUBJ_CLUSTER_OVERVIEW = 'clusterOverviewContainer';
|
||||
const SUBJ_CLUSTER_NAME = `${SUBJ_CLUSTER_OVERVIEW} clusterName`;
|
||||
const SUBJ_CLUSTER_NAME = `${SUBJ_CLUSTER_OVERVIEW} > clusterName`;
|
||||
|
||||
const SUBJ_ES_PANEL = `clusterItemContainerElasticsearch`;
|
||||
const SUBJ_ES_STATUS = `${SUBJ_ES_PANEL} statusIcon`;
|
||||
const SUBJ_ES_VERSION = `${SUBJ_ES_PANEL} esVersion`;
|
||||
const SUBJ_ES_UPTIME = `${SUBJ_ES_PANEL} esUptime`;
|
||||
const SUBJ_ES_OVERVIEW = `${SUBJ_ES_PANEL} esOverview`;
|
||||
const SUBJ_ES_NUMBER_OF_NODES = `${SUBJ_ES_PANEL} esNumberOfNodes`;
|
||||
const SUBJ_ES_DISK_AVAILABLE = `${SUBJ_ES_PANEL} esDiskAvailable`;
|
||||
const SUBJ_ES_JVM_HEAP = `${SUBJ_ES_PANEL} esJvmHeap`;
|
||||
const SUBJ_ES_NUMBER_OF_INDICES = `${SUBJ_ES_PANEL} esNumberOfIndices`;
|
||||
const SUBJ_ES_DOCUMENTS_COUNT = `${SUBJ_ES_PANEL} esDocumentsCount`;
|
||||
const SUBJ_ES_DISK_USAGE = `${SUBJ_ES_PANEL} esDiskUsage`;
|
||||
const SUBJ_ES_PRIMARY_SHARDS = `${SUBJ_ES_PANEL} esPrimaryShards`;
|
||||
const SUBJ_ES_REPLICA_SHARDS = `${SUBJ_ES_PANEL} esReplicaShards`;
|
||||
const SUBJ_ES_ML_JOBS = `${SUBJ_ES_PANEL} esMlJobs`;
|
||||
const SUBJ_ES_STATUS = `${SUBJ_ES_PANEL} > statusIcon`;
|
||||
const SUBJ_ES_VERSION = `${SUBJ_ES_PANEL} > esVersion`;
|
||||
const SUBJ_ES_UPTIME = `${SUBJ_ES_PANEL} > esUptime`;
|
||||
const SUBJ_ES_OVERVIEW = `${SUBJ_ES_PANEL} > esOverview`;
|
||||
const SUBJ_ES_NUMBER_OF_NODES = `${SUBJ_ES_PANEL} > esNumberOfNodes`;
|
||||
const SUBJ_ES_DISK_AVAILABLE = `${SUBJ_ES_PANEL} > esDiskAvailable`;
|
||||
const SUBJ_ES_JVM_HEAP = `${SUBJ_ES_PANEL} > esJvmHeap`;
|
||||
const SUBJ_ES_NUMBER_OF_INDICES = `${SUBJ_ES_PANEL} > esNumberOfIndices`;
|
||||
const SUBJ_ES_DOCUMENTS_COUNT = `${SUBJ_ES_PANEL} > esDocumentsCount`;
|
||||
const SUBJ_ES_DISK_USAGE = `${SUBJ_ES_PANEL} > esDiskUsage`;
|
||||
const SUBJ_ES_PRIMARY_SHARDS = `${SUBJ_ES_PANEL} > esPrimaryShards`;
|
||||
const SUBJ_ES_REPLICA_SHARDS = `${SUBJ_ES_PANEL} > esReplicaShards`;
|
||||
const SUBJ_ES_ML_JOBS = `${SUBJ_ES_PANEL} > esMlJobs`;
|
||||
|
||||
const SUBJ_KBN_PANEL = `clusterItemContainerKibana`;
|
||||
const SUBJ_KBN_STATUS = `${SUBJ_KBN_PANEL} statusIcon`;
|
||||
const SUBJ_KBN_REQUESTS = `${SUBJ_KBN_PANEL} kbnRequests`;
|
||||
const SUBJ_KBN_MAX_RESPONSE_TIME = `${SUBJ_KBN_PANEL} kbnMaxResponseTime`;
|
||||
const SUBJ_KBN_CONNECTIONS = `${SUBJ_KBN_PANEL} kbnConnections`;
|
||||
const SUBJ_KBN_MEMORY_USAGE = `${SUBJ_KBN_PANEL} kbnMemoryUsage`;
|
||||
const SUBJ_KBN_OVERVIEW = `${SUBJ_KBN_PANEL} kbnOverview`;
|
||||
const SUBJ_KBN_INSTANCES = `${SUBJ_KBN_PANEL} kbnInstances`;
|
||||
const SUBJ_KBN_STATUS = `${SUBJ_KBN_PANEL} > statusIcon`;
|
||||
const SUBJ_KBN_REQUESTS = `${SUBJ_KBN_PANEL} > kbnRequests`;
|
||||
const SUBJ_KBN_MAX_RESPONSE_TIME = `${SUBJ_KBN_PANEL} > kbnMaxResponseTime`;
|
||||
const SUBJ_KBN_CONNECTIONS = `${SUBJ_KBN_PANEL} > kbnConnections`;
|
||||
const SUBJ_KBN_MEMORY_USAGE = `${SUBJ_KBN_PANEL} > kbnMemoryUsage`;
|
||||
const SUBJ_KBN_OVERVIEW = `${SUBJ_KBN_PANEL} > kbnOverview`;
|
||||
const SUBJ_KBN_INSTANCES = `${SUBJ_KBN_PANEL} > kbnInstances`;
|
||||
|
||||
const SUBJ_LS_PANEL = `clusterItemContainerLogstash`;
|
||||
const SUBJ_LS_EVENTS_RECEIVED = `${SUBJ_LS_PANEL} lsEventsReceived`;
|
||||
const SUBJ_LS_EVENTS_EMITTED = `${SUBJ_LS_PANEL} lsEventsEmitted`;
|
||||
const SUBJ_LS_NODES = `${SUBJ_LS_PANEL} lsNodes`;
|
||||
const SUBJ_LS_UPTIME = `${SUBJ_LS_PANEL} lsUptime`;
|
||||
const SUBJ_LS_JVM_HEAP = `${SUBJ_LS_PANEL} lsJvmHeap`;
|
||||
const SUBJ_LS_PIPELINES = `${SUBJ_LS_PANEL} lsPipelines`;
|
||||
const SUBJ_LS_EVENTS_RECEIVED = `${SUBJ_LS_PANEL} > lsEventsReceived`;
|
||||
const SUBJ_LS_EVENTS_EMITTED = `${SUBJ_LS_PANEL} > lsEventsEmitted`;
|
||||
const SUBJ_LS_NODES = `${SUBJ_LS_PANEL} > lsNodes`;
|
||||
const SUBJ_LS_UPTIME = `${SUBJ_LS_PANEL} > lsUptime`;
|
||||
const SUBJ_LS_JVM_HEAP = `${SUBJ_LS_PANEL} > lsJvmHeap`;
|
||||
const SUBJ_LS_PIPELINES = `${SUBJ_LS_PANEL} > lsPipelines`;
|
||||
|
||||
const SUBJ_BEATS_PANEL = `clusterItemContainerBeats`;
|
||||
const SUBJ_BEATS_OVERVIEW = `${SUBJ_BEATS_PANEL} beatsOverview`;
|
||||
const SUBJ_BEATS_TOTAL_EVENTS = `${SUBJ_BEATS_PANEL} beatsTotalEvents`;
|
||||
const SUBJ_BEATS_BYTES_SENT = `${SUBJ_BEATS_PANEL} beatsBytesSent`;
|
||||
const SUBJ_BEATS_LISTING = `${SUBJ_BEATS_PANEL} beatsListing`;
|
||||
const SUBJ_BEATS_TYPES_COUNTS = `${SUBJ_BEATS_PANEL} beatTypeCount`;
|
||||
const SUBJ_BEATS_OVERVIEW = `${SUBJ_BEATS_PANEL} > beatsOverview`;
|
||||
const SUBJ_BEATS_TOTAL_EVENTS = `${SUBJ_BEATS_PANEL} > beatsTotalEvents`;
|
||||
const SUBJ_BEATS_BYTES_SENT = `${SUBJ_BEATS_PANEL} > beatsBytesSent`;
|
||||
const SUBJ_BEATS_LISTING = `${SUBJ_BEATS_PANEL} > beatsListing`;
|
||||
const SUBJ_BEATS_TYPES_COUNTS = `${SUBJ_BEATS_PANEL} > beatTypeCount`;
|
||||
|
||||
return new class ClusterOverview {
|
||||
|
||||
|
@ -186,7 +186,7 @@ export function MonitoringClusterOverviewProvider({ getService }) {
|
|||
return testSubjects.getVisibleText(SUBJ_BEATS_BYTES_SENT);
|
||||
}
|
||||
async getBeatsListingDetail() {
|
||||
const total = await testSubjects.getVisibleText(SUBJ_BEATS_LISTING + ' beatsTotal');
|
||||
const total = await testSubjects.getVisibleText(SUBJ_BEATS_LISTING + '> beatsTotal');
|
||||
const counts = await testSubjects.getAttributeAll(SUBJ_BEATS_TYPES_COUNTS, 'data-test-beat-type-count');
|
||||
|
||||
const countsByType = counts.reduce((accum, text) => {
|
||||
|
|
|
@ -8,12 +8,12 @@ export function MonitoringElasticsearchIndexDetailProvider({ getService }) {
|
|||
const testSubjects = getService('testSubjects');
|
||||
|
||||
const SUBJ_SUMMARY = 'elasticsearchIndexDetailStatus';
|
||||
const SUBJ_SUMMARY_DATA_SIZE = `${SUBJ_SUMMARY} dataSize`;
|
||||
const SUBJ_SUMMARY_DATA_SIZE_PRIMARIES = `${SUBJ_SUMMARY} dataSizePrimaries`;
|
||||
const SUBJ_SUMMARY_DOCUMENT_COUNT = `${SUBJ_SUMMARY} documentCount`;
|
||||
const SUBJ_SUMMARY_TOTAL_SHARDS = `${SUBJ_SUMMARY} totalShards`;
|
||||
const SUBJ_SUMMARY_UNASSIGNED_SHARDS = `${SUBJ_SUMMARY} unassignedShards`;
|
||||
const SUBJ_SUMMARY_HEALTH = `${SUBJ_SUMMARY} statusIcon`;
|
||||
const SUBJ_SUMMARY_DATA_SIZE = `${SUBJ_SUMMARY} > dataSize`;
|
||||
const SUBJ_SUMMARY_DATA_SIZE_PRIMARIES = `${SUBJ_SUMMARY} > dataSizePrimaries`;
|
||||
const SUBJ_SUMMARY_DOCUMENT_COUNT = `${SUBJ_SUMMARY} > documentCount`;
|
||||
const SUBJ_SUMMARY_TOTAL_SHARDS = `${SUBJ_SUMMARY} > totalShards`;
|
||||
const SUBJ_SUMMARY_UNASSIGNED_SHARDS = `${SUBJ_SUMMARY} > unassignedShards`;
|
||||
const SUBJ_SUMMARY_HEALTH = `${SUBJ_SUMMARY} > statusIcon`;
|
||||
|
||||
return new class ElasticsearchIndexDetail {
|
||||
|
||||
|
|
|
@ -14,20 +14,20 @@ export function MonitoringElasticsearchIndicesProvider({ getService, getPageObje
|
|||
const SUBJ_LISTING_PAGE = 'elasticsearchIndicesListingPage';
|
||||
|
||||
const SUBJ_TABLE_CONTAINER = 'elasticsearchIndicesTableContainer';
|
||||
const SUBJ_TABLE_NO_DATA = `${SUBJ_TABLE_CONTAINER} monitoringTableNoData`;
|
||||
const SUBJ_SEARCH_BAR = `${SUBJ_TABLE_CONTAINER} monitoringTableToolBar`;
|
||||
const SUBJ_TABLE_NO_DATA = `${SUBJ_TABLE_CONTAINER} > monitoringTableNoData`;
|
||||
const SUBJ_SEARCH_BAR = `${SUBJ_TABLE_CONTAINER} > monitoringTableToolBar`;
|
||||
|
||||
const SUBJ_TABLE_SORT_SEARCH_COL = `${SUBJ_TABLE_CONTAINER} tableHeaderCell_search_rate_5`;
|
||||
|
||||
const SUBJ_INDICES_NAMES = `${SUBJ_TABLE_CONTAINER} name`;
|
||||
const SUBJ_INDICES_STATUSES = `${SUBJ_TABLE_CONTAINER} statusIcon`;
|
||||
const SUBJ_INDICES_DOCUMENT_COUNTS = `${SUBJ_TABLE_CONTAINER} documentCount`;
|
||||
const SUBJ_INDICES_DATA_SIZES = `${SUBJ_TABLE_CONTAINER} dataSize`;
|
||||
const SUBJ_INDICES_INDEX_RATES = `${SUBJ_TABLE_CONTAINER} indexRate`;
|
||||
const SUBJ_INDICES_SEARCH_RATES = `${SUBJ_TABLE_CONTAINER} searchRate`;
|
||||
const SUBJ_INDICES_UNASSIGNED_SHARD_COUNTS = `${SUBJ_TABLE_CONTAINER} unassignedShards`;
|
||||
const SUBJ_INDICES_NAMES = `${SUBJ_TABLE_CONTAINER} > name`;
|
||||
const SUBJ_INDICES_STATUSES = `${SUBJ_TABLE_CONTAINER} > statusIcon`;
|
||||
const SUBJ_INDICES_DOCUMENT_COUNTS = `${SUBJ_TABLE_CONTAINER} > documentCount`;
|
||||
const SUBJ_INDICES_DATA_SIZES = `${SUBJ_TABLE_CONTAINER} > dataSize`;
|
||||
const SUBJ_INDICES_INDEX_RATES = `${SUBJ_TABLE_CONTAINER} > indexRate`;
|
||||
const SUBJ_INDICES_SEARCH_RATES = `${SUBJ_TABLE_CONTAINER} > searchRate`;
|
||||
const SUBJ_INDICES_UNASSIGNED_SHARD_COUNTS = `${SUBJ_TABLE_CONTAINER} > unassignedShards`;
|
||||
|
||||
const SUBJ_INDEX_LINK_PREFIX = `${SUBJ_TABLE_CONTAINER} indexLink-`;
|
||||
const SUBJ_INDEX_LINK_PREFIX = `${SUBJ_TABLE_CONTAINER} > indexLink-`;
|
||||
|
||||
return new class ElasticsearchIndices {
|
||||
async isOnListing() {
|
||||
|
|
|
@ -8,15 +8,15 @@ export function MonitoringElasticsearchNodeDetailProvider({ getService }) {
|
|||
const testSubjects = getService('testSubjects');
|
||||
|
||||
const SUBJ_SUMMARY = 'elasticsearchNodeDetailStatus';
|
||||
const SUBJ_SUMMARY_TRANSPORT_ADDRESS = `${SUBJ_SUMMARY} transportAddress`;
|
||||
const SUBJ_SUMMARY_JVM_HEAP = `${SUBJ_SUMMARY} jvmHeap`;
|
||||
const SUBJ_SUMMARY_FREE_DISK_SPACE = `${SUBJ_SUMMARY} freeDiskSpace`;
|
||||
const SUBJ_SUMMARY_DOCUMENT_COUNT = `${SUBJ_SUMMARY} documentCount`;
|
||||
const SUBJ_SUMMARY_DATA_SIZE = `${SUBJ_SUMMARY} dataSize`;
|
||||
const SUBJ_SUMMARY_INDICES_COUNT = `${SUBJ_SUMMARY} indicesCount`;
|
||||
const SUBJ_SUMMARY_SHARDS_COUNT = `${SUBJ_SUMMARY} shardsCount`;
|
||||
const SUBJ_SUMMARY_NODE_TYPE = `${SUBJ_SUMMARY} nodeType`;
|
||||
const SUBJ_SUMMARY_STATUS = `${SUBJ_SUMMARY} statusIcon`;
|
||||
const SUBJ_SUMMARY_TRANSPORT_ADDRESS = `${SUBJ_SUMMARY} > transportAddress`;
|
||||
const SUBJ_SUMMARY_JVM_HEAP = `${SUBJ_SUMMARY} > jvmHeap`;
|
||||
const SUBJ_SUMMARY_FREE_DISK_SPACE = `${SUBJ_SUMMARY} > freeDiskSpace`;
|
||||
const SUBJ_SUMMARY_DOCUMENT_COUNT = `${SUBJ_SUMMARY} > documentCount`;
|
||||
const SUBJ_SUMMARY_DATA_SIZE = `${SUBJ_SUMMARY} > dataSize`;
|
||||
const SUBJ_SUMMARY_INDICES_COUNT = `${SUBJ_SUMMARY} > indicesCount`;
|
||||
const SUBJ_SUMMARY_SHARDS_COUNT = `${SUBJ_SUMMARY} > shardsCount`;
|
||||
const SUBJ_SUMMARY_NODE_TYPE = `${SUBJ_SUMMARY} > nodeType`;
|
||||
const SUBJ_SUMMARY_STATUS = `${SUBJ_SUMMARY} > statusIcon`;
|
||||
|
||||
return new class ElasticsearchNodeDetail {
|
||||
|
||||
|
|
|
@ -14,27 +14,27 @@ export function MonitoringElasticsearchNodesProvider({ getService, getPageObject
|
|||
const SUBJ_LISTING_PAGE = 'elasticsearchNodesListingPage';
|
||||
|
||||
const SUBJ_TABLE_CONTAINER = 'elasticsearchNodesTableContainer';
|
||||
const SUBJ_TABLE_NO_DATA = `${SUBJ_TABLE_CONTAINER} monitoringTableNoData`;
|
||||
const SUBJ_SEARCH_BAR = `${SUBJ_TABLE_CONTAINER} monitoringTableToolBar`;
|
||||
const SUBJ_TABLE_NO_DATA = `${SUBJ_TABLE_CONTAINER} > monitoringTableNoData`;
|
||||
const SUBJ_SEARCH_BAR = `${SUBJ_TABLE_CONTAINER} > monitoringTableToolBar`;
|
||||
|
||||
const SUBJ_TABLE_SORT_NAME_COL = `${SUBJ_TABLE_CONTAINER} tableHeaderCell_name_0`;
|
||||
const SUBJ_TABLE_SORT_STATUS_COL = `${SUBJ_TABLE_CONTAINER} tableHeaderCell_isOnline_1`;
|
||||
const SUBJ_TABLE_SORT_SHARDS_COL = `${SUBJ_TABLE_CONTAINER} tableHeaderCell_shardCount_2`;
|
||||
const SUBJ_TABLE_SORT_CPU_COL = `${SUBJ_TABLE_CONTAINER} tableHeaderCell_node_cpu_utilization_3`;
|
||||
const SUBJ_TABLE_SORT_LOAD_COL = `${SUBJ_TABLE_CONTAINER} tableHeaderCell_node_load_average_4`;
|
||||
const SUBJ_TABLE_SORT_MEM_COL = `${SUBJ_TABLE_CONTAINER} tableHeaderCell_node_jvm_mem_percent_5`;
|
||||
const SUBJ_TABLE_SORT_DISK_COL = `${SUBJ_TABLE_CONTAINER} tableHeaderCell_node_free_space_6`;
|
||||
const SUBJ_TABLE_SORT_NAME_COL = `${SUBJ_TABLE_CONTAINER} > tableHeaderCell_name_0`;
|
||||
const SUBJ_TABLE_SORT_STATUS_COL = `${SUBJ_TABLE_CONTAINER} > tableHeaderCell_isOnline_1`;
|
||||
const SUBJ_TABLE_SORT_SHARDS_COL = `${SUBJ_TABLE_CONTAINER} > tableHeaderCell_shardCount_2`;
|
||||
const SUBJ_TABLE_SORT_CPU_COL = `${SUBJ_TABLE_CONTAINER} > tableHeaderCell_node_cpu_utilization_3`;
|
||||
const SUBJ_TABLE_SORT_LOAD_COL = `${SUBJ_TABLE_CONTAINER} > tableHeaderCell_node_load_average_4`;
|
||||
const SUBJ_TABLE_SORT_MEM_COL = `${SUBJ_TABLE_CONTAINER} > tableHeaderCell_node_jvm_mem_percent_5`;
|
||||
const SUBJ_TABLE_SORT_DISK_COL = `${SUBJ_TABLE_CONTAINER} > tableHeaderCell_node_free_space_6`;
|
||||
|
||||
const SUBJ_TABLE_BODY = 'elasticsearchNodesTableContainer';
|
||||
const SUBJ_NODES_NAMES = `${SUBJ_TABLE_BODY} name`;
|
||||
const SUBJ_NODES_STATUSES = `${SUBJ_TABLE_BODY} statusIcon`;
|
||||
const SUBJ_NODES_CPUS = `${SUBJ_TABLE_BODY} cpuUsage`;
|
||||
const SUBJ_NODES_LOADS = `${SUBJ_TABLE_BODY} loadAverage`;
|
||||
const SUBJ_NODES_MEMS = `${SUBJ_TABLE_BODY} jvmMemory`;
|
||||
const SUBJ_NODES_DISKS = `${SUBJ_TABLE_BODY} diskFreeSpace`;
|
||||
const SUBJ_NODES_SHARDS = `${SUBJ_TABLE_BODY} shards`;
|
||||
const SUBJ_NODES_NAMES = `${SUBJ_TABLE_BODY} > name`;
|
||||
const SUBJ_NODES_STATUSES = `${SUBJ_TABLE_BODY} > statusIcon`;
|
||||
const SUBJ_NODES_CPUS = `${SUBJ_TABLE_BODY} > cpuUsage`;
|
||||
const SUBJ_NODES_LOADS = `${SUBJ_TABLE_BODY} > loadAverage`;
|
||||
const SUBJ_NODES_MEMS = `${SUBJ_TABLE_BODY} > jvmMemory`;
|
||||
const SUBJ_NODES_DISKS = `${SUBJ_TABLE_BODY} > diskFreeSpace`;
|
||||
const SUBJ_NODES_SHARDS = `${SUBJ_TABLE_BODY} > shards`;
|
||||
|
||||
const SUBJ_NODE_LINK_PREFIX = `${SUBJ_TABLE_BODY} nodeLink-`;
|
||||
const SUBJ_NODE_LINK_PREFIX = `${SUBJ_TABLE_BODY} > nodeLink-`;
|
||||
|
||||
return new class ElasticsearchIndices {
|
||||
async isOnListing() {
|
||||
|
|
|
@ -27,10 +27,10 @@ const classificationsAndTooltipsReducer = (classifications, tooltips) => {
|
|||
export function MonitoringElasticsearchShardsProvider({ getService }) {
|
||||
const testSubjects = getService('testSubjects');
|
||||
|
||||
const SUBJ_UNASSIGNED_SHARDS = `clusterView-Unassigned shardIcon`;
|
||||
const SUBJ_UNASSIGNED_SHARDS = `clusterView-Unassigned > shardIcon`;
|
||||
const SUBJ_ASSIGNED_CONTAINER_PREFIX = 'clusterView-Assigned-';
|
||||
const SUBJ_SHOW_SYSTEM_INDICES = 'shardShowSystemIndices';
|
||||
const getAssignedShardsSelector = parent => parent + ' shardIcon'; // will be used in a descendant search starting with SUBJ_ASSIGNED_CONTAINER
|
||||
const getAssignedShardsSelector = parent => parent + '> shardIcon'; // will be used in a descendant search starting with SUBJ_ASSIGNED_CONTAINER
|
||||
|
||||
return new class ElasticsearchShards {
|
||||
|
||||
|
|
|
@ -8,14 +8,14 @@ export function MonitoringElasticsearchSummaryStatusProvider({ getService }) {
|
|||
const testSubjects = getService('testSubjects');
|
||||
|
||||
const SUBJ_SUMMARY = 'elasticsearchClusterStatus';
|
||||
const SUBJ_SUMMARY_NODES_COUNT = `${SUBJ_SUMMARY} nodesCount`;
|
||||
const SUBJ_SUMMARY_INDICES_COUNT = `${SUBJ_SUMMARY} indicesCount`;
|
||||
const SUBJ_SUMMARY_MEMORY = `${SUBJ_SUMMARY} memory`;
|
||||
const SUBJ_SUMMARY_TOTAL_SHARDS = `${SUBJ_SUMMARY} totalShards`;
|
||||
const SUBJ_SUMMARY_UNASSIGNED_SHARDS = `${SUBJ_SUMMARY} unassignedShards`;
|
||||
const SUBJ_SUMMARY_DOCUMENT_COUNT = `${SUBJ_SUMMARY} documentCount`;
|
||||
const SUBJ_SUMMARY_DATA_SIZE = `${SUBJ_SUMMARY} dataSize`;
|
||||
const SUBJ_SUMMARY_HEALTH = `${SUBJ_SUMMARY} statusIcon`;
|
||||
const SUBJ_SUMMARY_NODES_COUNT = `${SUBJ_SUMMARY} > nodesCount`;
|
||||
const SUBJ_SUMMARY_INDICES_COUNT = `${SUBJ_SUMMARY} > indicesCount`;
|
||||
const SUBJ_SUMMARY_MEMORY = `${SUBJ_SUMMARY} > memory`;
|
||||
const SUBJ_SUMMARY_TOTAL_SHARDS = `${SUBJ_SUMMARY} > totalShards`;
|
||||
const SUBJ_SUMMARY_UNASSIGNED_SHARDS = `${SUBJ_SUMMARY} > unassignedShards`;
|
||||
const SUBJ_SUMMARY_DOCUMENT_COUNT = `${SUBJ_SUMMARY} > documentCount`;
|
||||
const SUBJ_SUMMARY_DATA_SIZE = `${SUBJ_SUMMARY} > dataSize`;
|
||||
const SUBJ_SUMMARY_HEALTH = `${SUBJ_SUMMARY} > statusIcon`;
|
||||
|
||||
return new class ElasticsearchSummaryStatus {
|
||||
|
||||
|
|
|
@ -11,11 +11,11 @@ export function MonitoringKibanaInstanceProvider({ getService }) {
|
|||
const SUBJ_INSTANCE_PAGE = 'kibanaInstancePage';
|
||||
|
||||
const SUBJ_SUMMARY = 'kibanaDetailStatus';
|
||||
const SUBJ_SUMMARY_TRANSPORT_ADDRESS = `${SUBJ_SUMMARY} transportAddress`;
|
||||
const SUBJ_SUMMARY_OS_FREE_MEMORY = `${SUBJ_SUMMARY} osFreeMemory`;
|
||||
const SUBJ_SUMMARY_VERSION = `${SUBJ_SUMMARY} version`;
|
||||
const SUBJ_SUMMARY_UPTIME = `${SUBJ_SUMMARY} uptime`;
|
||||
const SUBJ_SUMMARY_HEALTH = `${SUBJ_SUMMARY} statusIcon`;
|
||||
const SUBJ_SUMMARY_TRANSPORT_ADDRESS = `${SUBJ_SUMMARY} > transportAddress`;
|
||||
const SUBJ_SUMMARY_OS_FREE_MEMORY = `${SUBJ_SUMMARY} > osFreeMemory`;
|
||||
const SUBJ_SUMMARY_VERSION = `${SUBJ_SUMMARY} > version`;
|
||||
const SUBJ_SUMMARY_UPTIME = `${SUBJ_SUMMARY} > uptime`;
|
||||
const SUBJ_SUMMARY_HEALTH = `${SUBJ_SUMMARY} > statusIcon`;
|
||||
|
||||
return new class KibanaInstance {
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ export function MonitoringKibanaInstancesProvider({ getService }) {
|
|||
const SUBJ_INSTANCES_PAGE = 'kibanaInstancesPage';
|
||||
|
||||
const SUBJ_TABLE_BODY = 'kibanaInstancesTableContainer';
|
||||
const SUBJ_INDEX_LINK_PREFIX = `${SUBJ_TABLE_BODY} kibanaLink-`;
|
||||
const SUBJ_INDEX_LINK_PREFIX = `${SUBJ_TABLE_BODY} > kibanaLink-`;
|
||||
|
||||
return new class KibanaInstances {
|
||||
|
||||
|
|
|
@ -8,12 +8,12 @@ export function MonitoringKibanaSummaryStatusProvider({ getService }) {
|
|||
const testSubjects = getService('testSubjects');
|
||||
|
||||
const SUBJ_SUMMARY = 'kibanaClusterStatus';
|
||||
const SUBJ_SUMMARY_INSTANCES = `${SUBJ_SUMMARY} instances`;
|
||||
const SUBJ_SUMMARY_MEMORY = `${SUBJ_SUMMARY} memory`;
|
||||
const SUBJ_SUMMARY_REQUESTS = `${SUBJ_SUMMARY} requests`;
|
||||
const SUBJ_SUMMARY_CONNECTIONS = `${SUBJ_SUMMARY} connections`;
|
||||
const SUBJ_SUMMARY_MAX_RESPONSE_TIME = `${SUBJ_SUMMARY} maxResponseTime`;
|
||||
const SUBJ_SUMMARY_HEALTH = `${SUBJ_SUMMARY} statusIcon`;
|
||||
const SUBJ_SUMMARY_INSTANCES = `${SUBJ_SUMMARY} > instances`;
|
||||
const SUBJ_SUMMARY_MEMORY = `${SUBJ_SUMMARY} > memory`;
|
||||
const SUBJ_SUMMARY_REQUESTS = `${SUBJ_SUMMARY} > requests`;
|
||||
const SUBJ_SUMMARY_CONNECTIONS = `${SUBJ_SUMMARY} > connections`;
|
||||
const SUBJ_SUMMARY_MAX_RESPONSE_TIME = `${SUBJ_SUMMARY} > maxResponseTime`;
|
||||
const SUBJ_SUMMARY_HEALTH = `${SUBJ_SUMMARY} > statusIcon`;
|
||||
|
||||
return new class KibanaSummaryStatus {
|
||||
|
||||
|
|
|
@ -14,14 +14,14 @@ export function MonitoringLogstashPipelinesProvider({ getService, getPageObjects
|
|||
const SUBJ_LISTING_PAGE = 'logstashPipelinesListing';
|
||||
|
||||
const SUBJ_TABLE_CONTAINER = 'monitoringLogstashPipelinesTableContainer';
|
||||
const SUBJ_TABLE_NO_DATA = `${SUBJ_TABLE_CONTAINER} monitoringTableNoData`;
|
||||
const SUBJ_SEARCH_BAR = `${SUBJ_TABLE_CONTAINER} monitoringTableToolBar`;
|
||||
const SUBJ_TABLE_NO_DATA = `${SUBJ_TABLE_CONTAINER} > monitoringTableNoData`;
|
||||
const SUBJ_SEARCH_BAR = `${SUBJ_TABLE_CONTAINER} > monitoringTableToolBar`;
|
||||
|
||||
const SUBJ_TABLE_SORT_EVENTS_EMITTED_RATE_COL = `${SUBJ_TABLE_CONTAINER} tableHeaderCell_latestThroughput_1`;
|
||||
const SUBJ_TABLE_SORT_EVENTS_EMITTED_RATE_COL = `${SUBJ_TABLE_CONTAINER} > tableHeaderCell_latestThroughput_1`;
|
||||
|
||||
const SUBJ_PIPELINES_IDS = `${SUBJ_TABLE_CONTAINER} id`;
|
||||
const SUBJ_PIPELINES_EVENTS_EMITTED_RATES = `${SUBJ_TABLE_CONTAINER} eventsEmittedRate`;
|
||||
const SUBJ_PIPELINES_NODE_COUNTS = `${SUBJ_TABLE_CONTAINER} nodeCount`;
|
||||
const SUBJ_PIPELINES_IDS = `${SUBJ_TABLE_CONTAINER} > id`;
|
||||
const SUBJ_PIPELINES_EVENTS_EMITTED_RATES = `${SUBJ_TABLE_CONTAINER} > eventsEmittedRate`;
|
||||
const SUBJ_PIPELINES_NODE_COUNTS = `${SUBJ_TABLE_CONTAINER} > nodeCount`;
|
||||
|
||||
return new class LogstashPipelines {
|
||||
async isOnListing() {
|
||||
|
|
|
@ -8,10 +8,10 @@ export function MonitoringLogstashSummaryStatusProvider({ getService }) {
|
|||
const testSubjects = getService('testSubjects');
|
||||
|
||||
const SUBJ_SUMMARY = 'logstashClusterStatus';
|
||||
const SUBJ_SUMMARY_NODE_COUNT = `${SUBJ_SUMMARY} node_count`;
|
||||
const SUBJ_SUMMARY_MEMORY_USED = `${SUBJ_SUMMARY} memory_used`;
|
||||
const SUBJ_SUMMARY_EVENTS_IN_TOTAL = `${SUBJ_SUMMARY} events_in_total`;
|
||||
const SUBJ_SUMMARY_EVENTS_OUT_TOTAL = `${SUBJ_SUMMARY} events_out_total`;
|
||||
const SUBJ_SUMMARY_NODE_COUNT = `${SUBJ_SUMMARY} > node_count`;
|
||||
const SUBJ_SUMMARY_MEMORY_USED = `${SUBJ_SUMMARY} > memory_used`;
|
||||
const SUBJ_SUMMARY_EVENTS_IN_TOTAL = `${SUBJ_SUMMARY} > events_in_total`;
|
||||
const SUBJ_SUMMARY_EVENTS_OUT_TOTAL = `${SUBJ_SUMMARY} > events_out_total`;
|
||||
|
||||
return new class LogstashSummaryStatus {
|
||||
|
||||
|
|
|
@ -13,23 +13,23 @@ export function PipelineEditorProvider({ getService }) {
|
|||
const testSubjects = getService('testSubjects');
|
||||
|
||||
// test subject selectors
|
||||
const SUBJ_CONTAINER = 'pipelineEdit';
|
||||
const getContainerSubjForId = id => `pipelineEdit-${id}`;
|
||||
const SUBJ_INPUT_ID = 'pipelineEdit inputId';
|
||||
const SUBJ_INPUT_DESCRIPTION = 'pipelineEdit inputDescription';
|
||||
const SUBJ_UI_ACE_PIPELINE = 'pipelineEdit acePipeline';
|
||||
const SUBJ_CONTAINER = '~pipelineEdit';
|
||||
const getContainerSubjForId = id => `~pipelineEdit-${id}`;
|
||||
const SUBJ_INPUT_ID = '~pipelineEdit > inputId';
|
||||
const SUBJ_INPUT_DESCRIPTION = '~pipelineEdit > inputDescription';
|
||||
const SUBJ_UI_ACE_PIPELINE = '~pipelineEdit > acePipeline';
|
||||
|
||||
const SUBJ_INPUT_WORKERS = 'pipelineEdit inputWorkers';
|
||||
const SUBJ_INPUT_BATCH_SIZE = 'pipelineEdit inputBatchSize';
|
||||
const SUBJ_SELECT_QUEUE_TYPE = 'pipelineEdit selectQueueType';
|
||||
const SUBJ_INPUT_QUEUE_MAX_BYTES_NUMBER = 'pipelineEdit inputQueueMaxBytesNumber';
|
||||
const SUBJ_SELECT_QUEUE_MAX_BYTES_UNITS = 'pipelineEdit selectQueueMaxBytesUnits';
|
||||
const SUBJ_INPUT_QUEUE_CHECKPOINT_WRITES = 'pipelineEdit inputQueueCheckpointWrites';
|
||||
const SUBJ_INPUT_WORKERS = '~pipelineEdit > inputWorkers';
|
||||
const SUBJ_INPUT_BATCH_SIZE = '~pipelineEdit > inputBatchSize';
|
||||
const SUBJ_SELECT_QUEUE_TYPE = '~pipelineEdit > selectQueueType';
|
||||
const SUBJ_INPUT_QUEUE_MAX_BYTES_NUMBER = '~pipelineEdit > inputQueueMaxBytesNumber';
|
||||
const SUBJ_SELECT_QUEUE_MAX_BYTES_UNITS = '~pipelineEdit > selectQueueMaxBytesUnits';
|
||||
const SUBJ_INPUT_QUEUE_CHECKPOINT_WRITES = '~pipelineEdit > inputQueueCheckpointWrites';
|
||||
|
||||
const SUBJ_BTN_SAVE = 'pipelineEdit btnSavePipeline';
|
||||
const SUBJ_BTN_CANCEL = 'pipelineEdit btnCancel';
|
||||
const SUBJ_BTN_DELETE = 'pipelineEdit btnDeletePipeline';
|
||||
const SUBJ_LNK_BREADCRUMB_MANAGEMENT = 'breadcrumbs lnkBreadcrumb0';
|
||||
const SUBJ_BTN_SAVE = '~pipelineEdit > btnSavePipeline';
|
||||
const SUBJ_BTN_CANCEL = '~pipelineEdit > btnCancel';
|
||||
const SUBJ_BTN_DELETE = '~pipelineEdit > btnDeletePipeline';
|
||||
const SUBJ_LNK_BREADCRUMB_MANAGEMENT = 'breadcrumbs > lnkBreadcrumb0';
|
||||
|
||||
const DEFAULT_INPUT_VALUES = {
|
||||
id: '',
|
||||
|
|
|
@ -11,13 +11,13 @@ export function PipelineListProvider({ getService }) {
|
|||
|
||||
// test subject selectors
|
||||
const SUBJ_CONTAINER = `pipelineList`;
|
||||
const SUBJ_BTN_ADD = `pipelineList btnAdd`;
|
||||
const SUBJ_BTN_DELETE = `pipelineList btnDeletePipeline`;
|
||||
const getCloneLinkSubjForId = id => `pipelineList lnkPipelineClone-${id}`;
|
||||
const SUBJ_FILTER = `pipelineList filter`;
|
||||
const SUBJ_SELECT_ALL = `pipelineList pipelineTable checkboxSelectAll`;
|
||||
const getSelectCheckbox = id => `pipelineList pipelineTable checkboxSelectRow-${id}`;
|
||||
const SUBJ_BTN_NEXT_PAGE = `pipelineList pagination-button-next`;
|
||||
const SUBJ_BTN_ADD = `pipelineList > btnAdd`;
|
||||
const SUBJ_BTN_DELETE = `pipelineList > btnDeletePipeline`;
|
||||
const getCloneLinkSubjForId = id => `pipelineList > lnkPipelineClone-${id}`;
|
||||
const SUBJ_FILTER = `pipelineList > filter`;
|
||||
const SUBJ_SELECT_ALL = `pipelineList > pipelineTable > checkboxSelectAll`;
|
||||
const getSelectCheckbox = id => `pipelineList > pipelineTable > checkboxSelectRow-${id}`;
|
||||
const SUBJ_BTN_NEXT_PAGE = `pipelineList > pagination-button-next`;
|
||||
|
||||
const INNER_SUBJ_ROW = `row`;
|
||||
const INNER_SUBJ_CELL_ID = `cellId`;
|
||||
|
@ -25,7 +25,7 @@ export function PipelineListProvider({ getService }) {
|
|||
const INNER_SUBJ_CELL_LAST_MODIFIED = `cellLastModified`;
|
||||
const INNER_SUBJ_CELL_USERNAME = `cellUsername`;
|
||||
|
||||
const SUBJ_CELL_ID = `${SUBJ_CONTAINER} ${INNER_SUBJ_ROW} ${INNER_SUBJ_CELL_ID}`;
|
||||
const SUBJ_CELL_ID = `${SUBJ_CONTAINER} > ${INNER_SUBJ_ROW} > ${INNER_SUBJ_CELL_ID}`;
|
||||
|
||||
return new class PipelineList {
|
||||
/**
|
||||
|
|
|
@ -11,12 +11,12 @@ export function UserMenuProvider({ getService }) {
|
|||
return new class UserMenu {
|
||||
async clickLogoutButton() {
|
||||
await this._ensureMenuOpen();
|
||||
await testSubjects.click('userMenu logoutLink');
|
||||
await testSubjects.click('userMenu > logoutLink');
|
||||
}
|
||||
|
||||
async clickProvileLink() {
|
||||
await this._ensureMenuOpen();
|
||||
await testSubjects.click('userMenu profileLink');
|
||||
await testSubjects.click('userMenu > profileLink');
|
||||
}
|
||||
|
||||
async logoutLinkExists() {
|
||||
|
@ -25,7 +25,7 @@ export function UserMenuProvider({ getService }) {
|
|||
}
|
||||
|
||||
await this._ensureMenuOpen();
|
||||
return await testSubjects.exists('userMenu logoutLink');
|
||||
return await testSubjects.exists('userMenu > logoutLink');
|
||||
}
|
||||
|
||||
async closeMenu() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue