diff --git a/x-pack/plugins/security/public/management/api_keys/api_keys_grid/api_keys_grid_page.tsx b/x-pack/plugins/security/public/management/api_keys/api_keys_grid/api_keys_grid_page.tsx index aa94f4f147789..778abc50e42f7 100644 --- a/x-pack/plugins/security/public/management/api_keys/api_keys_grid/api_keys_grid_page.tsx +++ b/x-pack/plugins/security/public/management/api_keys/api_keys_grid/api_keys_grid_page.tsx @@ -475,6 +475,7 @@ export class APIKeysGridPage extends Component { defaultMessage: 'Name', }), sortable: true, + 'data-test-subj': 'apiKeyNameCell', }, ]); diff --git a/x-pack/test/functional/apps/api_keys/home_page.ts b/x-pack/test/functional/apps/api_keys/home_page.ts index 588051699a5d7..ec6f26bc6593a 100644 --- a/x-pack/test/functional/apps/api_keys/home_page.ts +++ b/x-pack/test/functional/apps/api_keys/home_page.ts @@ -17,6 +17,17 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const testSubjects = getService('testSubjects'); const find = getService('find'); const browser = getService('browser'); + const retry = getService('retry'); + + async function ensureApiKeysExist(apiKeysNames: string[]) { + await retry.try(async () => { + for (const apiKeyName of apiKeysNames) { + log.debug(`Checking if API key ("${apiKeyName}") exists.`); + await pageObjects.apiKeys.ensureApiKeyExists(apiKeyName); + log.debug(`API key ("${apiKeyName}") exists.`); + } + }); + } describe('Home page', function () { before(async () => { @@ -109,6 +120,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await pageObjects.apiKeys.clickOnPromptCreateApiKey(); await pageObjects.apiKeys.setApiKeyName('api key 1'); await pageObjects.apiKeys.submitOnCreateApiKey(); + await ensureApiKeysExist(['api key 1']); }); it('one by one', async () => { @@ -123,6 +135,9 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await pageObjects.apiKeys.setApiKeyName('api key 2'); await pageObjects.apiKeys.submitOnCreateApiKey(); + // Make sure all API keys we want to delete are created and rendered. + await ensureApiKeysExist(['api key 1', 'api key 2']); + await pageObjects.apiKeys.bulkDeleteApiKeys(); expect(await pageObjects.apiKeys.getApiKeysFirstPromptTitle()).to.be( 'Create your first API key' diff --git a/x-pack/test/functional/page_objects/api_keys_page.ts b/x-pack/test/functional/page_objects/api_keys_page.ts index 9349eaa4bda0c..cf7f76a810ce7 100644 --- a/x-pack/test/functional/page_objects/api_keys_page.ts +++ b/x-pack/test/functional/page_objects/api_keys_page.ts @@ -92,5 +92,16 @@ export function ApiKeysPageProvider({ getService }: FtrProviderContext) { await testSubjects.click('confirmModalConfirmButton'); } }, + + async ensureApiKeyExists(apiKeyName: string) { + const existingApiKeyNameCells = await testSubjects.findAll('apiKeyNameCell'); + for (const existingApiKeyNameCell of existingApiKeyNameCells) { + if (apiKeyName === (await existingApiKeyNameCell.getVisibleText())) { + return; + } + } + + throw new Error(`API key ("${apiKeyName}") does not exist.`); + }, }; }