From fd6cd3ddf7476ee884ccb7f051385f023787e282 Mon Sep 17 00:00:00 2001 From: Carlos Alcaide Corvo Date: Wed, 25 Jun 2025 07:39:10 -0700 Subject: [PATCH] Refactor test selectors aliases (#2897) * Refactor delete test selectors * Refactor list test selectors --- .../tests/acceptance/aliases/delete-test.js | 11 +-- .../tests/acceptance/aliases/list-test.js | 96 ++++++++++--------- .../tests/acceptance/aliases/selectors.js | 9 +- 3 files changed, 60 insertions(+), 56 deletions(-) diff --git a/ui/admin/tests/acceptance/aliases/delete-test.js b/ui/admin/tests/acceptance/aliases/delete-test.js index e04d7e934..c516b51e5 100644 --- a/ui/admin/tests/acceptance/aliases/delete-test.js +++ b/ui/admin/tests/acceptance/aliases/delete-test.js @@ -18,9 +18,6 @@ module('Acceptance | aliases | delete', function (hooks) { let aliasCount; - const DROPDOWN_BUTTON_SELECTOR = - 'tbody tr td:last-child .hds-dropdown-toggle-icon'; - const instances = { scopes: { global: null, @@ -66,7 +63,8 @@ module('Acceptance | aliases | delete', function (hooks) { assert.true(instances.alias.authorized_actions.includes('delete')); await visit(urls.aliases); - await click(DROPDOWN_BUTTON_SELECTOR); + + await click(commonSelectors.TABLE_FIRST_ROW_ACTION_DROPDOWN); await click(commonSelectors.DELETE_BTN); assert.strictEqual(aliasCount(), count - 1); @@ -79,9 +77,8 @@ module('Acceptance | aliases | delete', function (hooks) { await visit(urls.globalScope); urls.alias = `${urls.aliases}/${instances.alias.id}`; - - await click(`[href="${urls.aliases}"]`); - await click(DROPDOWN_BUTTON_SELECTOR); + await click(commonSelectors.HREF(urls.aliases)); + await click(commonSelectors.TABLE_FIRST_ROW_ACTION_DROPDOWN); assert.dom(commonSelectors.DELETE_BTN).doesNotExist(); }); diff --git a/ui/admin/tests/acceptance/aliases/list-test.js b/ui/admin/tests/acceptance/aliases/list-test.js index 2e4dfee83..7e81ee868 100644 --- a/ui/admin/tests/acceptance/aliases/list-test.js +++ b/ui/admin/tests/acceptance/aliases/list-test.js @@ -10,6 +10,7 @@ import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import { setupIndexedDb } from 'api/test-support/helpers/indexed-db'; import { authenticateSession } from 'ember-simple-auth/test-support'; import * as commonSelectors from 'admin/tests/helpers/selectors'; +import * as selectors from './selectors'; import { faker } from '@faker-js/faker'; module('Acceptance | aliases | list', function (hooks) { @@ -19,15 +20,7 @@ module('Acceptance | aliases | list', function (hooks) { let intl; - const ALIAS_TITLE = 'Aliases'; - const MESSAGE_DESCRIPTION_SELECTOR = '.hds-application-state__body'; - const MESSAGE_LINK_SELECTOR = - '.hds-application-state__footer .hds-link-standalone'; - const DROPDOWN_BUTTON_SELECTOR = (id) => - `tbody [data-test-alias-row="${id}"] td:last-child .hds-dropdown-toggle-icon`; - const DROPDOWN_ITEM_SELECTOR = '.hds-dropdown-list-item a'; - const SEARCH_INPUT_SELECTOR = '.search-filtering [type="search"]'; - const NO_RESULTS_MSG_SELECTOR = '[data-test-no-alias-results]'; + const mockTitle = 'Aliases'; const instances = { scopes: { @@ -90,15 +83,14 @@ module('Acceptance | aliases | list', function (hooks) { 'create', ), ); + assert.dom(commonSelectors.HREF(urls.aliases)).isVisible(); - assert.dom(`[href="${urls.aliases}"]`).isVisible(); - - await click(`[href="${urls.aliases}"]`); + await click(commonSelectors.HREF(urls.aliases)); assert - .dom(MESSAGE_DESCRIPTION_SELECTOR) + .dom(commonSelectors.PAGE_MESSAGE_DESCRIPTION) .hasText(intl.t('resources.alias.messages.none.description')); - assert.dom(MESSAGE_LINK_SELECTOR).exists(); + assert.dom(commonSelectors.PAGE_MESSAGE_LINK).isVisible(); }); test('user cannot navigate to index without either list or create actions', async function (assert) { @@ -119,16 +111,16 @@ module('Acceptance | aliases | list', function (hooks) { ); assert .dom(commonSelectors.SIDEBAR_NAV_CONTENT) - .doesNotIncludeText(ALIAS_TITLE); + .doesNotIncludeText(mockTitle); await visit(urls.aliases); - assert.dom(MESSAGE_DESCRIPTION_SELECTOR).hasText( + assert.dom(commonSelectors.PAGE_MESSAGE_DESCRIPTION).hasText( intl.t('descriptions.neither-list-nor-create', { - resource: ALIAS_TITLE, + resource: mockTitle, }), ); - assert.dom(MESSAGE_LINK_SELECTOR).doesNotExist(); + assert.dom(commonSelectors.PAGE_MESSAGE_LINK).doesNotExist(); }); test('user can navigate to index with only create action', async function (assert) { @@ -150,16 +142,16 @@ module('Acceptance | aliases | list', function (hooks) { 'create', ), ); - assert.dom(`[href="${urls.aliases}"]`).exists(); + assert.dom(commonSelectors.HREF(urls.aliases)).exists(); - await click(`[href="${urls.aliases}"]`); + await click(commonSelectors.HREF(urls.aliases)); - assert.dom(MESSAGE_DESCRIPTION_SELECTOR).hasText( + assert.dom(commonSelectors.PAGE_MESSAGE_DESCRIPTION).hasText( intl.t('descriptions.create-but-not-list', { - resource: ALIAS_TITLE, + resource: mockTitle, }), ); - assert.dom(MESSAGE_LINK_SELECTOR).exists(); + assert.dom(commonSelectors.PAGE_MESSAGE_LINK).exists(); }); test('user can navigate to index with only list action', async function (assert) { @@ -181,58 +173,68 @@ module('Acceptance | aliases | list', function (hooks) { 'create', ), ); - assert.dom(`[href="${urls.aliases}"]`).exists(); + assert.dom(commonSelectors.HREF(urls.aliases)).exists(); - await click(`[href="${urls.aliases}"]`); + await click(commonSelectors.HREF(urls.aliases)); assert - .dom(MESSAGE_DESCRIPTION_SELECTOR) + .dom(commonSelectors.PAGE_MESSAGE_DESCRIPTION) .hasText(intl.t('resources.alias.messages.none.description')); - assert.dom(MESSAGE_LINK_SELECTOR).doesNotExist(); + assert.dom(commonSelectors.PAGE_MESSAGE_LINK).doesNotExist(); }); test('edit action in table directs user to appropriate page', async function (assert) { await visit(urls.globalScope); - await click(`[href="${urls.aliases}"]`); - await click(DROPDOWN_BUTTON_SELECTOR(instances.alias.id)); + await click(commonSelectors.HREF(urls.aliases)); + await click(selectors.TABLE_ROW_ID_ACTION_DROPDOWN(instances.alias.id)); - assert.dom(DROPDOWN_ITEM_SELECTOR).exists(); - assert.dom(DROPDOWN_ITEM_SELECTOR).hasText('Edit'); - await click(DROPDOWN_ITEM_SELECTOR); + assert.dom( + selectors.TABLE_ROW_ID_ACTION_DROPDOWN_ITEM_LINK(instances.alias.id), + ); + assert + .dom(selectors.TABLE_ROW_ID_ACTION_DROPDOWN_ITEM_LINK(instances.alias.id)) + .hasText('Edit'); + + await click( + selectors.TABLE_ROW_ID_ACTION_DROPDOWN_ITEM_LINK(instances.alias.id), + ); assert.strictEqual(currentURL(), urls.alias); }); test('user can search for a specific alias by id', async function (assert) { await visit(urls.globalScope); - await click(`[href="${urls.aliases}"]`); + await click(commonSelectors.HREF(urls.aliases)); - assert.dom(`[href="${urls.alias}"]`).exists(); - assert.dom(`[href="${urls.aliasWithTarget}"]`).exists(); + assert.dom(commonSelectors.HREF(urls.alias)).exists(); + assert.dom(commonSelectors.HREF(urls.aliasWithTarget)).exists(); - await fillIn(SEARCH_INPUT_SELECTOR, instances.alias.id); - await waitFor(`[href="${urls.aliasWithTarget}"]`, { count: 0 }); + await fillIn(commonSelectors.SEARCH_INPUT, instances.alias.id); + await waitFor(commonSelectors.HREF(urls.aliasWithTarget), { count: 0 }); - assert.dom(`[href="${urls.alias}"]`).exists(); - assert.dom(`[href="${urls.aliasWithTarget}"]`).doesNotExist(); + assert.dom(commonSelectors.HREF(urls.alias)).exists(); + assert.dom(commonSelectors.HREF(urls.aliasWithTarget)).doesNotExist(); }); test('user can search for aliases and get no results', async function (assert) { await visit(urls.globalScope); - await click(`[href="${urls.aliases}"]`); + await click(commonSelectors.HREF(urls.aliases)); - assert.dom(`[href="${urls.alias}"]`).exists(); - assert.dom(`[href="${urls.aliasWithTarget}"]`).exists(); + assert.dom(commonSelectors.HREF(urls.alias)).exists(); + assert.dom(commonSelectors.HREF(urls.aliasWithTarget)).exists(); - await fillIn(SEARCH_INPUT_SELECTOR, 'fake alias that does not exist'); - await waitFor(NO_RESULTS_MSG_SELECTOR, { count: 1 }); + await fillIn( + commonSelectors.SEARCH_INPUT, + 'fake alias that does not exist', + ); + await waitFor(commonSelectors.PAGE_MESSAGE_HEADER, { count: 1 }); - assert.dom(`[href="${urls.alias}"]`).doesNotExist(); - assert.dom(`[href="${urls.aliasWithTarget}"]`).doesNotExist(); + assert.dom(commonSelectors.HREF(urls.alias)).doesNotExist(); + assert.dom(commonSelectors.HREF(urls.aliasWithTarget)).doesNotExist(); assert - .dom(NO_RESULTS_MSG_SELECTOR) + .dom(commonSelectors.PAGE_MESSAGE_HEADER) .includesText(intl.t('titles.no-results-found')); }); diff --git a/ui/admin/tests/acceptance/aliases/selectors.js b/ui/admin/tests/acceptance/aliases/selectors.js index e20709252..c792be246 100644 --- a/ui/admin/tests/acceptance/aliases/selectors.js +++ b/ui/admin/tests/acceptance/aliases/selectors.js @@ -3,5 +3,10 @@ * SPDX-License-Identifier: BUSL-1.1 */ -export const FIELD_DESTINATION_ID = '[name="destination_id"]'; -export const FIELD_HOST_ID = '[name="authorize_session_arguments"]'; +export const FIELD_DESTINATION_ID = '[name=destination_id]'; +export const FIELD_HOST_ID = '[name=authorize_session_arguments]'; + +export const TABLE_ROW_ID_ACTION_DROPDOWN = (id) => + `tbody [data-test-alias-row="${id}"] td:last-child button`; +export const TABLE_ROW_ID_ACTION_DROPDOWN_ITEM_LINK = (id) => + `tbody [data-test-alias-row="${id}"] td:last-child ul li a`;