diff --git a/ui/admin/tests/acceptance/workers/create-tags-test.js b/ui/admin/tests/acceptance/workers/create-tags-test.js index dcd6ec21b..21c586222 100644 --- a/ui/admin/tests/acceptance/workers/create-tags-test.js +++ b/ui/admin/tests/acceptance/workers/create-tags-test.js @@ -10,20 +10,13 @@ import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import a11yAudit from 'ember-a11y-testing/test-support/audit'; import { authenticateSession } from 'ember-simple-auth/test-support'; import * as commonSelectors from 'admin/tests/helpers/selectors'; +import * as selectors from './selectors'; module('Acceptance | workers | worker | create-tags', function (hooks) { setupApplicationTest(hooks); setupMirage(hooks); - const SAVE_BUTTON_SELECTOR = '[type="submit"]'; - const CANCEL_BUTTON_SELECTOR = '.rose-form-actions [type="button"]'; - const MANAGE_DROPDOWN_TOGGLE = - '[data-test-manage-worker-dropdown] button:first-child'; - const CREATE_TAGS_BUTTON_SELECTOR = - '[data-test-manage-worker-dropdown] ul a:first-child'; - const KEY_INPUT_SELECTOR = '[name="api_tags"] tr td:first-child input'; - const VALUE_INPUT_SELECTOR = '[name="api_tags"] tr td:nth-child(2) input'; - const ADD_INPUT_SELECTOR = '[name="api_tags"] tr td:last-child button'; + let confirmService; const instances = { scopes: { @@ -48,6 +41,7 @@ module('Acceptance | workers | worker | create-tags', function (hooks) { urls.worker = `${urls.workers}/${instances.worker.id}`; urls.tags = `${urls.worker}/tags`; urls.createTags = `${urls.worker}/create-tags`; + confirmService = this.owner.lookup('service:confirm'); await authenticateSession({ username: 'admin' }); }); @@ -55,8 +49,8 @@ module('Acceptance | workers | worker | create-tags', function (hooks) { test('visiting worker create tags', async function (assert) { await visit(urls.worker); - await click(MANAGE_DROPDOWN_TOGGLE); - await click(CREATE_TAGS_BUTTON_SELECTOR); + await click(selectors.MANAGE_DROPDOWN_WORKER); + await click(selectors.MANAGE_DROPDOWN_WORKER_CREATE_TAGS); await a11yAudit(); assert.strictEqual(currentURL(), urls.createTags); @@ -69,48 +63,45 @@ module('Acceptance | workers | worker | create-tags', function (hooks) { ); await visit(urls.worker); - await click(MANAGE_DROPDOWN_TOGGLE); + await click(selectors.MANAGE_DROPDOWN_WORKER); - assert.dom(CREATE_TAGS_BUTTON_SELECTOR).doesNotExist(); + assert.dom(selectors.MANAGE_DROPDOWN_WORKER_CREATE_TAGS).doesNotExist(); }); test('user can save worker tags', async function (assert) { await visit(urls.tags); - assert.dom('tbody tr').exists({ count: 11 }); + assert.dom(commonSelectors.TABLE_ROW).exists({ count: 11 }); - await click(MANAGE_DROPDOWN_TOGGLE); - await click(CREATE_TAGS_BUTTON_SELECTOR); - await fillIn(KEY_INPUT_SELECTOR, 'key'); - await fillIn(VALUE_INPUT_SELECTOR, 'value'); - await click(ADD_INPUT_SELECTOR); + await click(selectors.MANAGE_DROPDOWN_WORKER); + await click(selectors.MANAGE_DROPDOWN_WORKER_CREATE_TAGS); + await fillIn(selectors.FIELD_KEY, selectors.FIELD_KEY_VALUE); + await fillIn(selectors.FIELD_VALUE, selectors.FIELD_VALUE_VALUE); + await click(selectors.ADD_WORKER_TAG_ACTION); + await click(commonSelectors.SAVE_BTN); - await click(SAVE_BUTTON_SELECTOR); - - assert.dom('tbody tr').exists({ count: 12 }); + assert.dom(commonSelectors.TABLE_ROW).exists({ count: 12 }); assert.strictEqual(currentURL(), urls.tags); }); test('user can cancel tag creation', async function (assert) { await visit(urls.worker); - await click(MANAGE_DROPDOWN_TOGGLE); - await click(CREATE_TAGS_BUTTON_SELECTOR); - - await click(CANCEL_BUTTON_SELECTOR); + await click(selectors.MANAGE_DROPDOWN_WORKER); + await click(selectors.MANAGE_DROPDOWN_WORKER_CREATE_TAGS); + await click(commonSelectors.CANCEL_BTN); assert.strictEqual(currentURL(), urls.tags); }); test('user is prompted to confirm exit when there are unsaved changes', async function (assert) { - const confirmService = this.owner.lookup('service:confirm'); confirmService.enabled = true; await visit(urls.createTags); - await fillIn(KEY_INPUT_SELECTOR, 'key'); - await fillIn(VALUE_INPUT_SELECTOR, 'value'); - await click(ADD_INPUT_SELECTOR); - await click(`[href="${urls.workers}"]`); + await fillIn(selectors.FIELD_KEY, selectors.FIELD_KEY_VALUE); + await fillIn(selectors.FIELD_VALUE, selectors.FIELD_VALUE_VALUE); + await click(selectors.ADD_WORKER_TAG_ACTION); + await click(commonSelectors.HREF(urls.workers)); assert.dom(commonSelectors.MODAL_WARNING).isVisible(); @@ -120,14 +111,13 @@ module('Acceptance | workers | worker | create-tags', function (hooks) { }); test('user can cancel transition when there are unsaved changes', async function (assert) { - const confirmService = this.owner.lookup('service:confirm'); confirmService.enabled = true; await visit(urls.createTags); - await fillIn(KEY_INPUT_SELECTOR, 'key'); - await fillIn(VALUE_INPUT_SELECTOR, 'value'); - await click(ADD_INPUT_SELECTOR); - await click(`[href="${urls.workers}"]`); + await fillIn(selectors.FIELD_KEY, selectors.FIELD_KEY_VALUE); + await fillIn(selectors.FIELD_VALUE, selectors.FIELD_VALUE_VALUE); + await click(selectors.ADD_WORKER_TAG_ACTION); + await click(commonSelectors.HREF(urls.workers)); assert.dom(commonSelectors.MODAL_WARNING).isVisible(); diff --git a/ui/admin/tests/acceptance/workers/list-test.js b/ui/admin/tests/acceptance/workers/list-test.js index 960bd3bf7..6810ea024 100644 --- a/ui/admin/tests/acceptance/workers/list-test.js +++ b/ui/admin/tests/acceptance/workers/list-test.js @@ -9,18 +9,8 @@ import { setupApplicationTest } from 'admin/tests/helpers'; 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'; - -const WORKERS_FLYOUT = '[data-test-worker-tags-flyout]'; -const WORKERS_FLYOUT_DISMISS = '[data-test-worker-tags-flyout] div button'; -const WORKERS_FLYOUT_TABLE_BODY = '[data-test-worker-tags-flyout] tbody'; -const WORKERS_FLYOUT_TABLE_ROWS = '[data-test-worker-tags-flyout] tbody tr'; -const WORKERS_FLYOUT_VIEW_MORE_TAGS = - '[data-test-worker-tags-flyout] .view-more-tags a'; -const WORKER_TAGS_BUTTON = (workerId) => - `[data-test-worker-tags-flyout-button="${workerId}"]`; -const TAGS_FILTER_TOGGLE = '.workers details summary'; -const TAGS_FILTER_FIRST_ITEM_SELECTOR = - '.workers details div input:first-child'; +import * as commonSelectors from 'admin/tests/helpers/selectors'; +import * as selectors from './selectors'; module('Acceptance | workers | list', function (hooks) { setupApplicationTest(hooks); @@ -63,20 +53,21 @@ module('Acceptance | workers | list', function (hooks) { test('Users can navigate to workers with proper authorization', async function (assert) { featuresService.enable('byow'); await visit(urls.globalScope); + assert.ok( instances.scopes.global.authorized_collection_actions.workers.includes( 'list', ), ); - assert.dom(`[href="${urls.workers}"]`).isVisible(); + assert.dom(commonSelectors.HREF(urls.workers)).isVisible(); }); test('Users cannot navigate to workers without list or create permissions', async function (assert) { featuresService.enable('byow'); instances.scopes.global.authorized_collection_actions.workers = []; - await visit(urls.globalScope); - assert.dom(`[href="${urls.workers}"]`).isNotVisible(); + + assert.dom(commonSelectors.HREF(urls.workers)).isNotVisible(); }); test('Users can navigate to workers with only create permission', async function (assert) { @@ -84,49 +75,59 @@ module('Acceptance | workers | list', function (hooks) { instances.scopes.global.authorized_collection_actions.workers = [ 'create:worker-led', ]; - await visit(urls.globalScope); - assert.dom(`[href="${urls.workers}"]`).isVisible(); + + assert.dom(commonSelectors.HREF(urls.workers)).isVisible(); }); test('Users can navigate to workers with only list permission', async function (assert) { featuresService.enable('byow'); instances.scopes.global.authorized_collection_actions.workers = ['list']; - await visit(urls.globalScope); - assert.dom(`[href="${urls.workers}"]`).isVisible(); + + assert.dom(commonSelectors.HREF(urls.workers)).isVisible(); }); test('Users can filter by tags', async function (assert) { featuresService.enable('byow'); await visit(urls.workers); - assert.dom('tbody tr').exists({ count: 2 }); + assert.dom(commonSelectors.TABLE_ROW).exists({ count: 2 }); - await click(TAGS_FILTER_TOGGLE); - await click(TAGS_FILTER_FIRST_ITEM_SELECTOR); + await click(selectors.WORKER_TAGS_FILTER_DROPDOWN); + await click(selectors.WORKER_TAGS_FILTER_DROPDOWN_FIRST_ITEM); - assert.dom('tbody tr').exists({ count: 1 }); + assert.dom(commonSelectors.TABLE_ROW).exists({ count: 1 }); }); test('Users can open and close tags flyout for a specific worker', async function (assert) { featuresService.enable('byow'); await visit(urls.workers); - assert.dom(WORKERS_FLYOUT).isNotVisible(); - await click(WORKER_TAGS_BUTTON(instances.worker.id)); - assert.dom(WORKERS_FLYOUT).isVisible(); + assert.dom(selectors.WORKER_TAGS_FLYOUT).isNotVisible(); - await click(WORKERS_FLYOUT_DISMISS); - assert.dom(WORKERS_FLYOUT).isNotVisible(); + await click( + selectors.TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON(instances.worker.id), + ); + + assert.dom(selectors.WORKER_TAGS_FLYOUT).isVisible(); + + await click(selectors.WORKER_TAGS_FLYOUT_DISMISS_BUTTON); + + assert.dom(selectors.WORKER_TAGS_FLYOUT).isNotVisible(); }); test('Users can see worker tags in the tags flyout', async function (assert) { featuresService.enable('byow'); await visit(urls.workers); - await click(WORKER_TAGS_BUTTON(instances.worker.id)); - assert.dom(WORKERS_FLYOUT_TABLE_BODY).includesText('os = z-os'); + await click( + selectors.TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON(instances.worker.id), + ); + + assert + .dom(selectors.WORKER_TAGS_FLYOUT_TABLE_BODY) + .includesText('os = z-os'); }); test('Users can only see first 10 tags in the tags flyout', async function (assert) { @@ -148,9 +149,12 @@ module('Acceptance | workers | list', function (hooks) { }); await visit(urls.workers); - await click(WORKER_TAGS_BUTTON(instances.worker.id)); - assert.dom(WORKERS_FLYOUT_TABLE_ROWS).exists({ count: 10 }); + await click( + selectors.TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON(instances.worker.id), + ); + + assert.dom(selectors.WORKER_TAGS_FLYOUT_TABLE_ROWS).exists({ count: 10 }); }); test('Users can click on "view more tags" if there are more than 10 tags', async function (assert) { @@ -172,10 +176,13 @@ module('Acceptance | workers | list', function (hooks) { }); await visit(urls.workers); - await click(WORKER_TAGS_BUTTON(instances.worker.id)); - assert.dom(WORKERS_FLYOUT_TABLE_ROWS).exists({ count: 10 }); - assert.dom(WORKERS_FLYOUT_VIEW_MORE_TAGS).isVisible(); + await click( + selectors.TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON(instances.worker.id), + ); + + assert.dom(selectors.WORKER_TAGS_FLYOUT_TABLE_ROWS).exists({ count: 10 }); + assert.dom(selectors.WORKER_TAGS_FLYOUT_VIEW_MORE_TAGS_BUTTON).isVisible(); }); test('Users do not see "view more tags" if there are 10 or less tags', async function (assert) { @@ -191,26 +198,34 @@ module('Acceptance | workers | list', function (hooks) { }); await visit(urls.workers); - await click(WORKER_TAGS_BUTTON(instances.worker.id)); - assert.dom(WORKERS_FLYOUT_TABLE_ROWS).exists({ count: 5 }); - assert.dom(WORKERS_FLYOUT_VIEW_MORE_TAGS).isNotVisible(); + await click( + selectors.TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON(instances.worker.id), + ); + + assert.dom(selectors.WORKER_TAGS_FLYOUT_TABLE_ROWS).exists({ count: 5 }); + assert + .dom(selectors.WORKER_TAGS_FLYOUT_VIEW_MORE_TAGS_BUTTON) + .doesNotExist(); }); test('Users do not see worker tags flyout when returning to workers list', async function (assert) { featuresService.enable('byow'); await visit(urls.workers); - await click(WORKER_TAGS_BUTTON(instances.worker.id)); - assert.dom(WORKERS_FLYOUT).isVisible(); + await click( + selectors.TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON(instances.worker.id), + ); - await click(WORKERS_FLYOUT_VIEW_MORE_TAGS); + assert.dom(selectors.WORKER_TAGS_FLYOUT).isVisible(); + + await click(selectors.WORKER_TAGS_FLYOUT_VIEW_MORE_TAGS_BUTTON); assert.strictEqual(currentURL(), urls.workerTags); - await click(`[href="${urls.workers}"]`); + await click(commonSelectors.HREF(urls.workers)); assert.strictEqual(currentURL(), urls.workers); - assert.dom(WORKERS_FLYOUT).isNotVisible(); + assert.dom(selectors.WORKER_TAGS_FLYOUT).isNotVisible(); }); }); diff --git a/ui/admin/tests/acceptance/workers/selectors.js b/ui/admin/tests/acceptance/workers/selectors.js index 00ae77602..5a3116d5c 100644 --- a/ui/admin/tests/acceptance/workers/selectors.js +++ b/ui/admin/tests/acceptance/workers/selectors.js @@ -10,8 +10,68 @@ export const FIELD_WORKER_AUTH_REGISTRATION_VALUE = 'token'; export const WORKER_CREATE_SECTION_FORM_LABEL = '.worker-create-section label.hds-form-label'; export const WORKER_CREATE_SECTION = '.worker-create-section'; +export const ADD_WORKER_TAG_ACTION = + '[name="api_tags"] tr td:last-child button'; export const MANAGE_DROPDOWN_WORKER = '[data-test-manage-worker-dropdown] button:first-child'; export const MANAGE_DROPDOWN_WORKER_REMOVE = '[data-test-manage-worker-dropdown] div:nth-child(2) button'; +export const MANAGE_DROPDOWN_WORKER_CREATE_TAGS = + '[data-test-manage-worker-dropdown] ul a:first-child'; + +export const FIELD_KEY = '[name="api_tags"] tr td:first-child input'; +export const FIELD_KEY_VALUE = 'key'; + +export const FIELD_VALUE = '[name="api_tags"] tr td:nth-child(2) input'; +export const FIELD_VALUE_VALUE = 'value'; + +export const WORKER_TAGS_FLYOUT = '[data-test-worker-tags-flyout]'; +export const WORKER_TAGS_FLYOUT_DISMISS_BUTTON = + '[data-test-worker-tags-flyout] div button'; +export const WORKER_TAGS_FLYOUT_TABLE_BODY = + '[data-test-worker-tags-flyout] tbody'; +export const WORKER_TAGS_FLYOUT_TABLE_ROWS = + '[data-test-worker-tags-flyout] tbody tr'; +export const WORKER_TAGS_FLYOUT_VIEW_MORE_TAGS_BUTTON = + '[data-test-worker-tags-flyout] .view-more-tags a'; + +export const WORKER_TAGS_FILTER_DROPDOWN = '.workers details summary'; +export const WORKER_TAGS_FILTER_DROPDOWN_FIRST_ITEM = + '.workers details div input:first-child'; + +export const TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON = (workerId) => + `[data-test-worker-tags-flyout-button="${workerId}"]`; +export const TABLE_ROW_CONFIG_TAG_TOOLTIP_BUTTON = + 'tbody tr:first-child td:nth-child(3) button'; +export const TABLE_ROW_CONFIG_TAG_TOOLTIP_TEXT = + 'tbody tr:first-child td:nth-child(3) > div'; +export const TABLE_ROW_API_TAG_KEY = (row) => + `tbody tr:nth-child(${row}) td:first-child pre`; +export const TABLE_ROW_API_TAG_VALUE = (row) => + `tbody tr:nth-child(${row}) td:nth-child(2) pre`; +export const TABLE_ROW_API_TAG_ACTION_DROPDOWN = + 'tbody tr:nth-child(4) td:nth-child(4) button'; +export const TABLE_ROW_API_TAG_ACTION_DROPDOWN_FIRST_BUTTON = + 'tbody tr:nth-child(4) td:nth-child(4) ul li:first-child button'; +export const TABLE_ROW_API_TAG_ACTION_DROPDOWN_LAST_BUTTON = + 'tbody tr:nth-child(4) td:nth-child(4) ul li:nth-child(2) button'; + +export const MODAL_EDIT_TAG_FIELD_KEY = + '[data-test-edit-modal] [name="edit-tag-key"]'; +export const MODAL_EDIT_TAG_FIELD_VALUE = + '[data-test-edit-modal] [name="edit-tag-value"]'; +export const MODAL_EDIT_TAG_SAVE_BUTTON = + '[data-test-edit-modal] button:first-child'; +export const MODAL_EDIT_TAG_CANCEL_BUTTON = + '[data-test-edit-modal] button:last-child'; + +export const MODAL_CONFIRMATION_FIELD_REMOVE = + '[data-test-confirmation-modal] input'; +export const MODAL_CONFIRMATION_SAVE_BUTTON = + '[data-test-confirmation-modal] button:first-child'; +export const MODAL_CONFIRMATION_CANCEL_BUTTON = + '[data-test-confirmation-modal] button:last-child'; + +export const NO_TAGS_STATE_TITLE = '[data-test-no-tags] div:first-child'; +export const NO_TAGS_STATE_ACTION = '[data-test-no-tags] div:nth-child(3) a'; diff --git a/ui/admin/tests/acceptance/workers/tags-test.js b/ui/admin/tests/acceptance/workers/tags-test.js index fdd4653bb..0d6f37f3c 100644 --- a/ui/admin/tests/acceptance/workers/tags-test.js +++ b/ui/admin/tests/acceptance/workers/tags-test.js @@ -17,40 +17,13 @@ import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import a11yAudit from 'ember-a11y-testing/test-support/audit'; import { authenticateSession } from 'ember-simple-auth/test-support'; import { HCP_MANAGED_KEY } from 'api/models/worker'; +import * as commonSelectors from 'admin/tests/helpers/selectors'; +import * as selectors from './selectors'; module('Acceptance | workers | worker | tags', function (hooks) { setupApplicationTest(hooks); setupMirage(hooks); - const CONFIG_TAG_TOOLTIP_SELECTOR = - 'tbody tr:first-child td:nth-child(3) button'; - const CONFIG_TAG_TOOLTIP_TEXT_SELECTOR = - 'tbody tr:first-child td:nth-child(3) > div'; - const API_TAG_KEY_SELECTOR = (row) => - `tbody tr:nth-child(${row}) td:first-child pre`; - const API_TAG_VALUE_SELECTOR = (row) => - `tbody tr:nth-child(${row}) td:nth-child(2) pre`; - const API_TAG_ACTION_SELECTOR = - 'tbody tr:nth-child(4) td:nth-child(4) button'; - const API_TAG_FIRST_BUTTON_SELECTOR = - 'tbody tr:nth-child(4) td:nth-child(4) ul li:first-child button'; - const API_TAG_LAST_BUTTON_SELECTOR = - 'tbody tr:nth-child(4) td:nth-child(4) ul li:nth-child(2) button'; - const EDIT_TAG_KEY_INPUT_SELECTOR = - '[data-test-edit-modal] [name="edit-tag-key"]'; - const EDIT_TAG_VALUE_INPUT_SELECTOR = - '[data-test-edit-modal] [name="edit-tag-value"]'; - const EDIT_TAG_CONFIRM_BUTTON = '[data-test-edit-modal] button:first-child'; - const EDIT_TAG_CANCEL_BUTTON = '[data-test-edit-modal] button:last-child'; - const CONFIRMATION_MODAL_INPUT_SELECTOR = - '[data-test-confirmation-modal] input'; - const CONFIRMATION_MODAL_REMOVE_BUTTON_SELECTOR = - '[data-test-confirmation-modal] button:first-child'; - const CONFIRMATION_MODAL_CANCEL_BUTTON_SELECTOR = - '[data-test-confirmation-modal] button:last-child'; - const NO_TAGS_STATE_TITLE = '[data-test-no-tags] div:first-child'; - const NO_TAGS_STATE_ACTION = '[data-test-no-tags] div:nth-child(3) a'; - const instances = { scopes: { global: null, @@ -78,21 +51,22 @@ module('Acceptance | workers | worker | tags', function (hooks) { test('visiting worker tags', async function (assert) { await visit(urls.worker); - await click(`[href="${urls.tags}"]`); + + await click(commonSelectors.HREF(urls.tags)); await a11yAudit(); assert.strictEqual(currentURL(), urls.tags); - assert.dom('tbody tr').exists({ count: 11 }); + assert.dom(commonSelectors.TABLE_ROW).exists({ count: 11 }); }); test('config tags display a tooltip for HCP managed tag', async function (assert) { instances.worker.config_tags = { [HCP_MANAGED_KEY]: ['true'] }; await visit(urls.tags); - await focus(CONFIG_TAG_TOOLTIP_SELECTOR); + await focus(selectors.TABLE_ROW_CONFIG_TAG_TOOLTIP_BUTTON); assert - .dom(CONFIG_TAG_TOOLTIP_TEXT_SELECTOR) + .dom(selectors.TABLE_ROW_CONFIG_TAG_TOOLTIP_TEXT) .hasText( 'This is a HCP managed worker, you cannot edit or delete this worker’s tags.', ); @@ -101,43 +75,43 @@ module('Acceptance | workers | worker | tags', function (hooks) { test('config tags display a tooltip self managed tag', async function (assert) { await visit(urls.tags); - await focus(CONFIG_TAG_TOOLTIP_SELECTOR); + await focus(selectors.TABLE_ROW_CONFIG_TAG_TOOLTIP_BUTTON); assert - .dom(CONFIG_TAG_TOOLTIP_TEXT_SELECTOR) + .dom(selectors.TABLE_ROW_CONFIG_TAG_TOOLTIP_TEXT) .hasText('To edit config tags, edit them in your worker config file.'); }); test('users can remove a specific tag', async function (assert) { await visit(urls.tags); - assert.dom('tbody tr').exists({ count: 11 }); + assert.dom(commonSelectors.TABLE_ROW).exists({ count: 11 }); - await click(API_TAG_ACTION_SELECTOR); - await click(API_TAG_LAST_BUTTON_SELECTOR); + await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN); + await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_LAST_BUTTON); - assert.dom(CONFIRMATION_MODAL_REMOVE_BUTTON_SELECTOR).isDisabled(); + assert.dom(selectors.MODAL_CONFIRMATION_SAVE_BUTTON).isDisabled(); - await fillIn(CONFIRMATION_MODAL_INPUT_SELECTOR, 'REMOVE'); + await fillIn(selectors.MODAL_CONFIRMATION_FIELD_REMOVE, 'REMOVE'); - assert.dom(CONFIRMATION_MODAL_REMOVE_BUTTON_SELECTOR).isEnabled(); + assert.dom(selectors.MODAL_CONFIRMATION_CANCEL_BUTTON).isEnabled(); - await click(CONFIRMATION_MODAL_REMOVE_BUTTON_SELECTOR); + await click(selectors.MODAL_CONFIRMATION_SAVE_BUTTON); - assert.dom('tbody tr').exists({ count: 10 }); + assert.dom(commonSelectors.TABLE_ROW).exists({ count: 10 }); }); test('user can cancel tag removal', async function (assert) { await visit(urls.tags); - assert.dom('tbody tr').exists({ count: 11 }); + assert.dom(commonSelectors.TABLE_ROW).exists({ count: 11 }); - await click(API_TAG_ACTION_SELECTOR); - await click(API_TAG_LAST_BUTTON_SELECTOR); + await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN); + await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_LAST_BUTTON); - await click(CONFIRMATION_MODAL_CANCEL_BUTTON_SELECTOR); + await click(selectors.MODAL_CONFIRMATION_CANCEL_BUTTON); - assert.dom('tbody tr').exists({ count: 11 }); + assert.dom(commonSelectors.TABLE_ROW).exists({ count: 11 }); }); test('user cannot remove a tag without proper permission', async function (assert) { @@ -147,53 +121,57 @@ module('Acceptance | workers | worker | tags', function (hooks) { ); await visit(urls.tags); - assert.dom('tbody tr').exists({ count: 11 }); + assert.dom(commonSelectors.TABLE_ROW).exists({ count: 11 }); - await click(API_TAG_ACTION_SELECTOR); + await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN); // Asserts first button is for editing and there is no second button - assert.dom(API_TAG_FIRST_BUTTON_SELECTOR).hasText('Edit Tag'); - assert.dom(API_TAG_LAST_BUTTON_SELECTOR).doesNotExist(); + assert + .dom(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_FIRST_BUTTON) + .hasText('Edit Tag'); + assert + .dom(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_LAST_BUTTON) + .doesNotExist(); }); test('users can edit a specific tag', async function (assert) { await visit(urls.tags); - const key = find(API_TAG_KEY_SELECTOR(4)).textContent.trim(); - const value = find(API_TAG_VALUE_SELECTOR(4)).textContent.trim(); + const key = find(selectors.TABLE_ROW_API_TAG_KEY(4)).textContent.trim(); + const value = find(selectors.TABLE_ROW_API_TAG_VALUE(4)).textContent.trim(); - assert.dom(API_TAG_KEY_SELECTOR(4)).hasText(key); - assert.dom(API_TAG_VALUE_SELECTOR(4)).hasText(value); + assert.dom(selectors.TABLE_ROW_API_TAG_KEY(4)).hasText(key); + assert.dom(selectors.TABLE_ROW_API_TAG_VALUE(4)).hasText(value); - await click(API_TAG_ACTION_SELECTOR); - await click(API_TAG_FIRST_BUTTON_SELECTOR); + await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN); + await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_FIRST_BUTTON); - await fillIn(EDIT_TAG_KEY_INPUT_SELECTOR, 'red'); - await fillIn(EDIT_TAG_VALUE_INPUT_SELECTOR, 'blue'); + await fillIn(selectors.MODAL_EDIT_TAG_FIELD_KEY, 'red'); + await fillIn(selectors.MODAL_EDIT_TAG_FIELD_VALUE, 'blue'); - await click(EDIT_TAG_CONFIRM_BUTTON); + await click(selectors.MODAL_EDIT_TAG_SAVE_BUTTON); - assert.dom(API_TAG_KEY_SELECTOR(11)).hasText('red'); - assert.dom(API_TAG_VALUE_SELECTOR(11)).hasText('blue'); + assert.dom(selectors.TABLE_ROW_API_TAG_KEY(11)).hasText('red'); + assert.dom(selectors.TABLE_ROW_API_TAG_VALUE(11)).hasText('blue'); }); test('users can cancel editing a tag', async function (assert) { await visit(urls.tags); - const key = find(API_TAG_KEY_SELECTOR(4)).textContent.trim(); - const value = find(API_TAG_VALUE_SELECTOR(4)).textContent.trim(); + const key = find(selectors.TABLE_ROW_API_TAG_KEY(4)).textContent.trim(); + const value = find(selectors.TABLE_ROW_API_TAG_VALUE(4)).textContent.trim(); - assert.dom(API_TAG_KEY_SELECTOR(4)).hasText(key); - assert.dom(API_TAG_VALUE_SELECTOR(4)).hasText(value); + assert.dom(selectors.TABLE_ROW_API_TAG_KEY(4)).hasText(key); + assert.dom(selectors.TABLE_ROW_API_TAG_VALUE(4)).hasText(value); - await click(API_TAG_ACTION_SELECTOR); - await click(API_TAG_FIRST_BUTTON_SELECTOR); + await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN); + await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_FIRST_BUTTON); - await fillIn(EDIT_TAG_KEY_INPUT_SELECTOR, 'red'); - await fillIn(EDIT_TAG_VALUE_INPUT_SELECTOR, 'blue'); + await fillIn(selectors.MODAL_EDIT_TAG_FIELD_KEY, 'red'); + await fillIn(selectors.MODAL_EDIT_TAG_FIELD_VALUE, 'blue'); - await click(EDIT_TAG_CANCEL_BUTTON); + await click(selectors.MODAL_EDIT_TAG_CANCEL_BUTTON); - assert.dom(API_TAG_KEY_SELECTOR(4)).hasText(key); - assert.dom(API_TAG_VALUE_SELECTOR(4)).hasText(value); + assert.dom(selectors.TABLE_ROW_API_TAG_KEY(4)).hasText(key); + assert.dom(selectors.TABLE_ROW_API_TAG_VALUE(4)).hasText(value); }); test('user cannot edit a tag without proper permission', async function (assert) { @@ -203,11 +181,15 @@ module('Acceptance | workers | worker | tags', function (hooks) { ); await visit(urls.tags); - await click(API_TAG_ACTION_SELECTOR); + await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN); // Asserts first button is for removing and there is no second button - assert.dom(API_TAG_FIRST_BUTTON_SELECTOR).hasText('Remove Tag'); - assert.dom(API_TAG_LAST_BUTTON_SELECTOR).doesNotExist(); + assert + .dom(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_FIRST_BUTTON) + .hasText('Remove Tag'); + assert + .dom(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_LAST_BUTTON) + .doesNotExist(); }); test('user does not see tag action dropdown if they cannot edit or remove tags', async function (assert) { @@ -218,7 +200,7 @@ module('Acceptance | workers | worker | tags', function (hooks) { await visit(urls.tags); - assert.dom(API_TAG_ACTION_SELECTOR).doesNotExist(); + assert.dom(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN).doesNotExist(); }); test('shows "No tags added" message when there are no worker tags', async function (assert) { @@ -228,7 +210,9 @@ module('Acceptance | workers | worker | tags', function (hooks) { await visit(urls.tags); - assert.dom(NO_TAGS_STATE_TITLE).hasText('No tags added'); - assert.dom(NO_TAGS_STATE_ACTION).hasAttribute('href', urls.createTags); + assert.dom(selectors.NO_TAGS_STATE_TITLE).hasText('No tags added'); + assert + .dom(selectors.NO_TAGS_STATE_ACTION) + .hasAttribute('href', urls.createTags); }); });