Refactor: 💡 User acceptance tests: list, update and accounts (#2726)

* refactor: 💡 users selector tests: list, update and accounts

* fix: 🐛 follow AAA pattern

* refactor: 💡 updated common selectors
This commit is contained in:
Priya Patel authored and GitHub committed 2025-03-14 16:04:56 -07:00
1 parent 2465739060
commit 825751239f
5 files changed
+159 -138

No files matched your search

@@ -12,6 +12,7 @@ import { Response } from 'miragejs';
import { authenticateSession } from 'ember-simple-auth/test-support';
import { TYPE_AUTH_METHOD_LDAP } from 'api/models/auth-method';
import * as commonSelectors from 'admin/tests/helpers/selectors';
import * as selectors from './selectors';
module('Acceptance | users | accounts', function (hooks) {
setupApplicationTest(hooks);
@@ -20,18 +21,6 @@ module('Acceptance | users | accounts', function (hooks) {
let accountsCount;
let features;
const ACCOUNTS_TYPE_SELECTOR = 'tbody tr .hds-badge__text';
const ADD_ACCOUNTS_ACTION_SELECTOR =
'[data-test-manage-user-dropdown] ul li:first-child a';
const MANAGE_DROPDOWN_SELECTOR =
'[data-test-manage-user-dropdown] button:first-child';
const TABLE_ROWS_SELECTOR = 'tbody tr';
const CHECKBOX_SELECTOR = 'tbody label';
const SUBMIT_BTN_SELECTOR = 'form [type="submit"]';
const CANCEL_BTN_SELECTOR = 'form [type="button"]';
const REMOVE_ACTION_SELECTOR = 'tbody tr .hds-dropdown-list-item button';
const ACCOUNTS_ACTION_SELECTOR = '.hds-dropdown-toggle-icon';
const instances = {
scopes: {
global: null,
@@ -74,21 +63,24 @@ module('Acceptance | users | accounts', function (hooks) {
test('visiting user accounts', async function (assert) {
await visit(urls.user);
await click(`[href="${urls.accounts}"]`);
await click(commonSelectors.HREF(urls.accounts));
await a11yAudit();
assert.strictEqual(currentURL(), urls.accounts);
assert.dom(TABLE_ROWS_SELECTOR).exists({ count: accountsCount });
assert.dom(commonSelectors.TABLE_ROW).exists({ count: accountsCount });
});
test('can remove an account', async function (assert) {
await visit(urls.user);
await click(`[href="${urls.accounts}"]`);
assert.dom(TABLE_ROWS_SELECTOR).exists({ count: accountsCount });
await click(ACCOUNTS_ACTION_SELECTOR);
await click(REMOVE_ACTION_SELECTOR);
assert.dom(TABLE_ROWS_SELECTOR).exists({ count: accountsCount - 1 });
await click(commonSelectors.HREF(urls.accounts));
assert.dom(commonSelectors.TABLE_ROW).exists({ count: accountsCount });
await click(commonSelectors.TABLE_FIRST_ROW_ACTION_DROPDOWN);
await click(commonSelectors.TABLE_FIRST_ROW_ACTION_DROPDOWN_ITEM_BTN);
assert.dom(commonSelectors.TABLE_ROW).exists({ count: accountsCount - 1 });
});
test('cannot remove an account without proper authorization', async function (assert) {
@@ -98,9 +90,11 @@ module('Acceptance | users | accounts', function (hooks) {
instances.user.update({ authorized_actions });
await visit(urls.user);
await click(`[href="${urls.accounts}"]`);
await click(commonSelectors.HREF(urls.accounts));
assert.dom(REMOVE_ACTION_SELECTOR).doesNotExist();
assert
.dom(commonSelectors.TABLE_FIRST_ROW_ACTION_DROPDOWN_ITEM_BTN)
.doesNotExist();
});
test('cannot remove an ldap account when feature flag disabled', async function (assert) {
@@ -116,10 +110,10 @@ module('Acceptance | users | accounts', function (hooks) {
instances.user.update({ accountIds: [id] });
await visit(urls.user);
await click(`[href="${urls.accounts}"]`);
await click(commonSelectors.HREF(urls.accounts));
assert.dom(ACCOUNTS_ACTION_SELECTOR).doesNotExist();
assert.dom(ACCOUNTS_TYPE_SELECTOR).hasText('LDAP');
assert.dom(commonSelectors.TABLE_FIRST_ROW_ACTION_DROPDOWN).doesNotExist();
assert.dom(selectors.TABLE_ROW_ACCOUNT_TYPE).hasText('LDAP');
});
test('can remove an ldap account when feature flag enabled', async function (assert) {
@@ -136,10 +130,10 @@ module('Acceptance | users | accounts', function (hooks) {
instances.user.update({ accountIds: [id] });
await visit(urls.user);
await click(`[href="${urls.accounts}"]`);
await click(commonSelectors.HREF(urls.accounts));
assert.dom(ACCOUNTS_ACTION_SELECTOR).exists();
assert.dom(ACCOUNTS_TYPE_SELECTOR).hasText('LDAP');
assert.dom(commonSelectors.TABLE_FIRST_ROW_ACTION_DROPDOWN).exists();
assert.dom(selectors.TABLE_ROW_ACCOUNT_TYPE).hasText('LDAP');
});
test('shows error message on account remove', async function (assert) {
@@ -157,17 +151,21 @@ module('Acceptance | users | accounts', function (hooks) {
});
await visit(urls.user);
await click(`[href="${urls.accounts}"]`);
assert.dom(TABLE_ROWS_SELECTOR).exists({ count: accountsCount });
await click(ACCOUNTS_ACTION_SELECTOR);
await click(REMOVE_ACTION_SELECTOR);
await click(commonSelectors.HREF(urls.accounts));
assert.dom(commonSelectors.TABLE_ROW).exists({ count: accountsCount });
await click(commonSelectors.TABLE_FIRST_ROW_ACTION_DROPDOWN);
await click(commonSelectors.TABLE_FIRST_ROW_ACTION_DROPDOWN_ITEM_BTN);
assert.dom(commonSelectors.ALERT_TOAST_BODY).isVisible();
});
test('visiting account add accounts', async function (assert) {
await visit(urls.accounts);
await click(MANAGE_DROPDOWN_SELECTOR);
await click(ADD_ACCOUNTS_ACTION_SELECTOR);
await click(selectors.MANAGE_DROPDOWN_USER);
await click(selectors.MANAGE_DROPDOWN_USER_ADD_ACCOUNTS);
await a11yAudit();
assert.strictEqual(currentURL(), urls.addAccounts);
@@ -175,10 +173,11 @@ module('Acceptance | users | accounts', function (hooks) {
test('can navigate to add accounts with proper authorization', async function (assert) {
await visit(urls.user);
await click(`[href="${urls.accounts}"]`);
await click(MANAGE_DROPDOWN_SELECTOR);
assert.dom(`[href="${urls.addAccounts}"]`).isVisible();
await click(commonSelectors.HREF(urls.accounts));
await click(selectors.MANAGE_DROPDOWN_USER);
assert.dom(commonSelectors.HREF(urls.addAccounts)).isVisible();
});
test('cannot navigate to add accounts without proper authorization', async function (assert) {
@@ -188,8 +187,9 @@ module('Acceptance | users | accounts', function (hooks) {
instances.user.update({ authorized_actions });
await visit(urls.user);
await click(`[href="${urls.accounts}"]`);
assert.dom(ADD_ACCOUNTS_ACTION_SELECTOR).doesNotExist();
await click(commonSelectors.HREF(urls.accounts));
assert.dom(selectors.MANAGE_DROPDOWN_USER_ADD_ACCOUNTS).doesNotExist();
});
test('cannot add ldap accounts to user when feature flag is disabled', async function (assert) {
@@ -207,12 +207,12 @@ module('Acceptance | users | accounts', function (hooks) {
instances.user.accountIds.length;
await visit(urls.user);
await click(`[href="${urls.accounts}"]`);
await click(MANAGE_DROPDOWN_SELECTOR);
await click(ADD_ACCOUNTS_ACTION_SELECTOR);
await click(commonSelectors.HREF(urls.accounts));
await click(selectors.MANAGE_DROPDOWN_USER);
await click(selectors.MANAGE_DROPDOWN_USER_ADD_ACCOUNTS);
assert
.dom(TABLE_ROWS_SELECTOR)
.dom(commonSelectors.TABLE_ROW)
.exists({ count: accountsAvailableCount - 1 });
});
@@ -232,50 +232,56 @@ module('Acceptance | users | accounts', function (hooks) {
instances.user.accountIds.length;
await visit(urls.user);
await click(`[href="${urls.accounts}"]`);
await click(commonSelectors.HREF(urls.accounts));
await click(selectors.MANAGE_DROPDOWN_USER);
await click(selectors.MANAGE_DROPDOWN_USER_ADD_ACCOUNTS);
await click(MANAGE_DROPDOWN_SELECTOR);
await click(ADD_ACCOUNTS_ACTION_SELECTOR);
assert.dom(TABLE_ROWS_SELECTOR).exists({ count: accountsAvailableCount });
assert
.dom(commonSelectors.TABLE_ROW)
.exists({ count: accountsAvailableCount });
});
test('select and save accounts to add', async function (assert) {
instances.user.update({ accountIds: [] });
await visit(urls.user);
await click(`[href="${urls.accounts}"]`);
assert.dom(TABLE_ROWS_SELECTOR).exists({ count: 0 });
await click(MANAGE_DROPDOWN_SELECTOR);
await click(ADD_ACCOUNTS_ACTION_SELECTOR);
await click(commonSelectors.HREF(urls.accounts));
assert.dom(commonSelectors.TABLE_ROW).exists({ count: 0 });
await click(selectors.MANAGE_DROPDOWN_USER);
await click(selectors.MANAGE_DROPDOWN_USER_ADD_ACCOUNTS);
assert.strictEqual(currentURL(), urls.addAccounts);
// Click three times to select, unselect, then reselect (for coverage)
await click(CHECKBOX_SELECTOR);
await click(CHECKBOX_SELECTOR);
await click(CHECKBOX_SELECTOR);
await click(SUBMIT_BTN_SELECTOR);
await click(commonSelectors.TABLE_ROW_CHECKBOX);
await click(commonSelectors.TABLE_ROW_CHECKBOX);
await click(commonSelectors.TABLE_ROW_CHECKBOX);
await click(commonSelectors.SAVE_BTN);
await visit(urls.accounts);
assert.dom(TABLE_ROWS_SELECTOR).exists({ count: 1 });
assert.dom(commonSelectors.TABLE_ROW).exists({ count: 1 });
assert.strictEqual(instances.user.accountIds.length, 1);
});
test('select and cancel accounts to add', async function (assert) {
await visit(urls.user);
await click(`[href="${urls.accounts}"]`);
assert.dom(TABLE_ROWS_SELECTOR).exists({ count: accountsCount });
await click(commonSelectors.HREF(urls.accounts));
await click(MANAGE_DROPDOWN_SELECTOR);
await click(ADD_ACCOUNTS_ACTION_SELECTOR);
assert.dom(commonSelectors.TABLE_ROW).exists({ count: accountsCount });
await click(selectors.MANAGE_DROPDOWN_USER);
await click(selectors.MANAGE_DROPDOWN_USER_ADD_ACCOUNTS);
assert.strictEqual(currentURL(), urls.addAccounts);
await click(CHECKBOX_SELECTOR);
await click(CANCEL_BTN_SELECTOR);
await click(commonSelectors.TABLE_ROW_CHECKBOX);
await click(commonSelectors.CANCEL_BTN);
assert.strictEqual(currentURL(), urls.accounts);
assert.dom(TABLE_ROWS_SELECTOR).exists({ count: accountsCount });
assert.dom(commonSelectors.TABLE_ROW).exists({ count: accountsCount });
});
test('shows error message on account add', async function (assert) {
@@ -293,8 +299,10 @@ module('Acceptance | users | accounts', function (hooks) {
});
instances.user.update({ accountIds: [] });
await visit(urls.addAccounts);
await click(CHECKBOX_SELECTOR);
await click(SUBMIT_BTN_SELECTOR);
await click(commonSelectors.TABLE_ROW_CHECKBOX);
await click(commonSelectors.SAVE_BTN);
assert.dom(commonSelectors.ALERT_TOAST_BODY).isVisible();
});
});
+30 -31
View File
@@ -10,15 +10,13 @@ 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';
module('Acceptance | users | list', function (hooks) {
setupApplicationTest(hooks);
setupMirage(hooks);
setupIndexedDb(hooks);
const SEARCH_INPUT_SELECTOR = '.search-filtering [type="search"]';
const NO_RESULTS_MSG_SELECTOR = '[data-test-no-user-results]';
const instances = {
scopes: {
global: null,
@@ -59,7 +57,7 @@ module('Acceptance | users | list', function (hooks) {
test('users can navigate to users with proper authorization', async function (assert) {
await visit(urls.globalScope);
await click(`[href="${urls.orgScope}"]`);
await click(commonSelectors.HREF(urls.orgScope));
assert.true(
instances.scopes.org.authorized_collection_actions.users.includes('list'),
@@ -69,15 +67,14 @@ module('Acceptance | users | list', function (hooks) {
'create',
),
);
assert.dom(`[href="${urls.users}"]`).exists();
assert.dom(commonSelectors.HREF(urls.users)).exists();
});
test('user cannot navigate to users tab without either list or create actions', async function (assert) {
instances.scopes.org.authorized_collection_actions.users = [];
await visit(urls.globalScope);
await click(`[href="${urls.orgScope}"]`);
await click(commonSelectors.HREF(urls.orgScope));
assert.false(
instances.scopes.org.authorized_collection_actions.users.includes(
@@ -87,7 +84,7 @@ module('Acceptance | users | list', function (hooks) {
assert.false(
instances.scopes.org.authorized_collection_actions.users.includes('list'),
);
assert.dom(`nav [href="${urls.users}"]`).doesNotExist();
assert.dom(`nav ${commonSelectors.HREF(urls.users)}`).doesNotExist();
});
test('user can navigate to users tab with only create action', async function (assert) {
@@ -97,7 +94,7 @@ module('Acceptance | users | list', function (hooks) {
);
await visit(urls.globalScope);
await click(`[href="${urls.orgScope}"]`);
await click(commonSelectors.HREF(urls.orgScope));
assert.false(
instances.scopes.org.authorized_collection_actions.users.includes('list'),
@@ -107,11 +104,11 @@ module('Acceptance | users | list', function (hooks) {
'create',
),
);
assert.dom(`[href="${urls.users}"]`).exists();
assert.dom(commonSelectors.HREF(urls.users)).exists();
await click(`[href="${urls.users}"]`);
await click(commonSelectors.HREF(urls.users));
assert.dom('.hds-application-state__body-text').isVisible();
assert.dom(commonSelectors.PAGE_MESSAGE_DESCRIPTION).isVisible();
assert.dom(commonSelectors.TABLE_RESOURCE_LINK(urls.user1)).doesNotExist();
});
@@ -122,7 +119,7 @@ module('Acceptance | users | list', function (hooks) {
);
await visit(urls.globalScope);
await click(`[href="${urls.orgScope}"]`);
await click(commonSelectors.HREF(urls.orgScope));
assert.true(
instances.scopes.org.authorized_collection_actions.users.includes('list'),
@@ -132,41 +129,43 @@ module('Acceptance | users | list', function (hooks) {
'create',
),
);
assert.dom(`[href="${urls.users}"]`).exists();
assert.dom(commonSelectors.HREF(urls.users)).exists();
await click(`[href="${urls.users}"]`);
await click(commonSelectors.HREF(urls.users));
assert.dom(`[href="${urls.user1}"]`).exists();
assert.dom(commonSelectors.HREF(urls.user1)).exists();
});
test('user can search for a user by id', async function (assert) {
await visit(urls.orgScope);
await click(`[href="${urls.users}"]`);
await click(commonSelectors.HREF(urls.users));
assert.dom(`[href="${urls.user1}"]`).exists();
assert.dom(`[href="${urls.user2}"]`).exists();
assert.dom(commonSelectors.HREF(urls.user1)).exists();
assert.dom(commonSelectors.HREF(urls.user2)).exists();
await fillIn(SEARCH_INPUT_SELECTOR, instances.user1.id);
await waitUntil(() => findAll(`[href="${urls.user2}"]`).length === 0);
await fillIn(commonSelectors.SEARCH_INPUT, instances.user1.id);
await waitUntil(
() => findAll(commonSelectors.HREF(urls.user2)).length === 0,
);
assert.dom(`[href="${urls.user1}"]`).exists();
assert.dom(`[href="${urls.user2}"]`).doesNotExist();
assert.dom(commonSelectors.HREF(urls.user1)).exists();
assert.dom(commonSelectors.HREF(urls.user2)).doesNotExist();
});
test('user can search for users and get no results', async function (assert) {
await visit(urls.orgScope);
await click(`[href="${urls.users}"]`);
await click(commonSelectors.HREF(urls.users));
assert.dom(`[href="${urls.user1}"]`).exists();
assert.dom(`[href="${urls.user2}"]`).exists();
assert.dom(commonSelectors.HREF(urls.user1)).exists();
assert.dom(commonSelectors.HREF(urls.user2)).exists();
await fillIn(SEARCH_INPUT_SELECTOR, 'fake user that does not exist');
await waitUntil(() => findAll(NO_RESULTS_MSG_SELECTOR).length === 1);
await fillIn(commonSelectors.SEARCH_INPUT, 'fake user that does not exist');
await waitUntil(() => findAll(selectors.NO_RESULTS_MSG).length === 1);
assert.dom(`[href="${urls.user1}"]`).doesNotExist();
assert.dom(`[href="${urls.user2}"]`).doesNotExist();
assert.dom(NO_RESULTS_MSG_SELECTOR).includesText('No results found');
assert.dom(commonSelectors.HREF(urls.user1)).doesNotExist();
assert.dom(commonSelectors.HREF(urls.user2)).doesNotExist();
assert.dom(selectors.NO_RESULTS_MSG).includesText('No results found');
});
});
@@ -7,3 +7,7 @@ export const MANAGE_DROPDOWN_USER_DELETE =
'[data-test-manage-user-dropdown] ul li button';
export const MANAGE_DROPDOWN_USER =
'[data-test-manage-user-dropdown] button:first-child';
export const NO_RESULTS_MSG = '[data-test-no-user-results]';
export const MANAGE_DROPDOWN_USER_ADD_ACCOUNTS =
'[data-test-manage-user-dropdown] ul li:first-child a';
export const TABLE_ROW_ACCOUNT_TYPE = 'tbody tr .hds-badge__text';
+48 -42
View File
@@ -17,6 +17,8 @@ module('Acceptance | users | update', function (hooks) {
setupMirage(hooks);
setupIndexedDb(hooks);
let confirmService;
const urls = {
orgScope: null,
users: null,
@@ -43,6 +45,7 @@ module('Acceptance | users | update', function (hooks) {
urls.orgScope = `/scopes/${instances.scopes.org.id}`;
urls.users = `${urls.orgScope}/users`;
urls.user = `${urls.users}/${instances.user.id}`;
confirmService = this.owner.lookup('service:confirm');
await authenticateSession({});
});
@@ -50,15 +53,15 @@ module('Acceptance | users | update', function (hooks) {
test('can save changes to an existing user', async function (assert) {
await visit(urls.users);
await click(`[href="${urls.user}"]`);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Updated user name');
await click('.rose-form-actions [type="submit"]');
await click(commonSelectors.HREF(urls.user));
await click(commonSelectors.EDIT_BTN, 'Activate edit mode');
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
await click(commonSelectors.SAVE_BTN);
assert.strictEqual(currentURL(), urls.user);
assert.strictEqual(
this.server.schema.users.first().name,
'Updated user name',
commonSelectors.FIELD_NAME_VALUE,
);
});
@@ -67,25 +70,27 @@ module('Acceptance | users | update', function (hooks) {
instances.user.authorized_actions.filter((item) => item !== 'update');
await visit(urls.users);
await click(`[href="${urls.user}"]`);
await click(commonSelectors.HREF(urls.user));
assert.false(instances.user.authorized_actions.includes('update'));
assert.dom('form [type="button"]').doesNotExist();
assert.dom(commonSelectors.EDIT_BTN).doesNotExist();
});
test('can cancel changes to an existing user', async function (assert) {
await visit(urls.users);
await click(`[href="${urls.user}"]`);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Unsaved user name');
await click('.rose-form-actions [type="button"]');
await click(commonSelectors.HREF(urls.user));
await click(commonSelectors.EDIT_BTN, 'Activate edit mode');
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
await click(commonSelectors.CANCEL_BTN);
assert.notEqual(instances.user.name, 'Unsaved user name');
assert.dom('[name="name"]').hasValue(instances.user.name);
assert.notEqual(instances.user.name, commonSelectors.FIELD_NAME_VALUE);
assert.dom(commonSelectors.FIELD_NAME).hasValue(instances.user.name);
});
test('saving an existing user with invalid fields displays error messages', async function (assert) {
const errorMessage =
'Invalid request. Request attempted to make second resource with the same field value that must be unique.';
await visit(urls.users);
this.server.patch('/users/:id', () => {
return new Response(
@@ -94,61 +99,62 @@ module('Acceptance | users | update', function (hooks) {
{
status: 400,
code: 'invalid_argument',
message: 'The request was invalid.',
details: {
request_fields: [
{
name: 'name',
description: 'Name is required.',
},
],
},
message: errorMessage,
},
);
});
await click(`[href="${urls.user}"]`);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'User name');
await click('[type="submit"]');
await click(commonSelectors.HREF(urls.user));
await click(commonSelectors.EDIT_BTN, 'Activate edit mode');
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
await click(commonSelectors.SAVE_BTN);
assert
.dom(commonSelectors.ALERT_TOAST_BODY)
.hasText('The request was invalid.');
assert.dom('[data-test-error-message-name]').hasText('Name is required.');
assert.dom(commonSelectors.ALERT_TOAST_BODY).hasText(errorMessage);
});
test('can discard unsaved user changes via dialog', async function (assert) {
const confirmService = this.owner.lookup('service:confirm');
confirmService.enabled = true;
assert.notEqual(instances.user.name, 'Unsaved user name');
assert.notEqual(instances.user.name, commonSelectors.FIELD_NAME_VALUE);
await visit(urls.user);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Unsaved user name');
await click(commonSelectors.EDIT_BTN, 'Activate edit mode');
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
assert.strictEqual(currentURL(), urls.user);
await click(`[href="${urls.users}"]`);
await click(commonSelectors.HREF(urls.users));
assert.dom(commonSelectors.MODAL_WARNING).exists();
await click(commonSelectors.MODAL_WARNING_CONFIRM_BTN, 'Click Discard');
assert.strictEqual(currentURL(), urls.users);
assert.notEqual(this.server.schema.users.first().name, 'Unsaved user name');
assert.notEqual(
this.server.schema.users.first().name,
commonSelectors.FIELD_NAME_VALUE,
);
});
test('can click cancel on discard dialog box for unsaved user changes', async function (assert) {
const confirmService = this.owner.lookup('service:confirm');
confirmService.enabled = true;
assert.notEqual(instances.user.name, 'Unsaved user name');
assert.notEqual(instances.user.name, commonSelectors.FIELD_NAME_VALUE);
await visit(urls.user);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Unsaved user name');
await click(commonSelectors.EDIT_BTN, 'Activate edit mode');
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
assert.strictEqual(currentURL(), urls.user);
await click(`[href="${urls.users}"]`);
await click(commonSelectors.HREF(urls.users));
assert.dom(commonSelectors.MODAL_WARNING).exists();
await click(commonSelectors.MODAL_WARNING_CANCEL_BTN, 'Click Cancel');
assert.strictEqual(currentURL(), urls.user);
assert.notEqual(this.server.schema.users.first().name, 'Unsaved user name');
assert.notEqual(
this.server.schema.users.first().name,
commonSelectors.FIELD_NAME_VALUE,
);
});
});
+4
View File
@@ -19,6 +19,10 @@ export const TABLE_ROW = 'tbody tr';
export const TABLE_ROW_CHECKBOX = 'tbody tr input[type="checkbox"]';
export const TABLE_FIRST_ROW_ACTION_DROPDOWN =
'tbody tr:first-child td:last-child button';
export const TABLE_FIRST_ROW_ACTION_DROPDOWN_ITEM_BTN =
'tbody tr:first-child td:last-child ul li button';
export const TABLE_FIRST_ROW_ACTION_DROPDOWN_ITEM_LINK =
'tbody tr:first-child td:last-child ul li a';
export const RESOURCE_NOT_FOUND_SUBTITLE =
'[data-test-error-application-state] .hds-application-state__error-code';