From 34a670f8d75606721995ae6dfa619538c0c3fb3f Mon Sep 17 00:00:00 2001 From: Priya Patel Date: Tue, 11 Mar 2025 14:53:32 -0700 Subject: [PATCH] Refactor: Onboarding tests selectors refactor (#2715) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: 💡 Onboarding tests Refactor test selectors for onboarding acceptance tests ✅ Closes: #ICU-16398, #ICU-16399 * fix: 🐛 failing test * chore: 🤖 add copyright header * fix: 🐛 use AAA pattern and server.schema * fix: 🐛 moved done button to selectors * fix: 🐛 renamed copy text btn selector --- .../acceptance/onboarding/onboarding-test.js | 25 +++++++++---- .../tests/acceptance/onboarding/selectors.js | 12 +++++++ .../acceptance/onboarding/success-test.js | 36 +++++++++++-------- 3 files changed, 53 insertions(+), 20 deletions(-) create mode 100644 ui/admin/tests/acceptance/onboarding/selectors.js diff --git a/ui/admin/tests/acceptance/onboarding/onboarding-test.js b/ui/admin/tests/acceptance/onboarding/onboarding-test.js index 3d5da1636..26097bf48 100644 --- a/ui/admin/tests/acceptance/onboarding/onboarding-test.js +++ b/ui/admin/tests/acceptance/onboarding/onboarding-test.js @@ -8,6 +8,8 @@ import { setupApplicationTest } from 'admin/tests/helpers'; import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import { authenticateSession } from 'ember-simple-auth/test-support'; import { visit, fillIn, click, currentURL } from '@ember/test-helpers'; +import * as commonSelectors from 'admin/tests/helpers/selectors'; +import * as selectors from './selectors'; module('Acceptance | onboarding', function (hooks) { setupApplicationTest(hooks); @@ -25,21 +27,32 @@ module('Acceptance | onboarding', function (hooks) { test('show targetAddress and targetPort fields', async function (assert) { await visit(urls.onboarding); - assert.dom('[name="targetAddress"]').isVisible(); - assert.dom('[name="targetPort"]').isVisible(); + + assert.dom(selectors.FIELD_TARGET_ADDRESS).isVisible(); + assert.dom(selectors.FIELD_TARGET_PORT).isVisible(); }); test('redirect user to success when fill targetAddress, targetPort and click Save', async function (assert) { await visit(urls.onboarding); - await fillIn('[name="targetAddress"]', '192.168.1.0'); - await fillIn('[name="targetPort"]', '22'); - await click('[type="submit"]'); + + await fillIn( + selectors.FIELD_TARGET_ADDRESS, + selectors.FIELD_TARGET_ADDRESS_VALUE, + ); + await fillIn( + selectors.FIELD_TARGET_PORT, + selectors.FIELD_TARGET_PORT_VALUE, + ); + await click(commonSelectors.SAVE_BTN); + assert.strictEqual(currentURL(), urls.success); }); test('redirect user to orgs screen when click do this later', async function (assert) { await visit(urls.onboarding); - await click('.rose-form-actions [type="button"]'); + + await click(selectors.DO_THIS_LATER_BTN); + assert.strictEqual(currentURL(), urls.orgs); }); }); diff --git a/ui/admin/tests/acceptance/onboarding/selectors.js b/ui/admin/tests/acceptance/onboarding/selectors.js new file mode 100644 index 000000000..c3190bbdc --- /dev/null +++ b/ui/admin/tests/acceptance/onboarding/selectors.js @@ -0,0 +1,12 @@ +/** + * Copyright (c) HashiCorp, Inc. + * SPDX-License-Identifier: BUSL-1.1 + */ + +export const DO_THIS_LATER_BTN = '.rose-form-actions [type="button"]'; +export const COPY_TEXT_BTN = '.hds-copy-snippet__text'; +export const FIELD_TARGET_ADDRESS = '[name="targetAddress"]'; +export const FIELD_TARGET_ADDRESS_VALUE = '192.168.1.0'; +export const FIELD_TARGET_PORT = '[name="targetPort"]'; +export const FIELD_TARGET_PORT_VALUE = '22'; +export const DONE_BTN = '[data-test-onboarding-done-button]'; diff --git a/ui/admin/tests/acceptance/onboarding/success-test.js b/ui/admin/tests/acceptance/onboarding/success-test.js index 2926935a1..7a4320134 100644 --- a/ui/admin/tests/acceptance/onboarding/success-test.js +++ b/ui/admin/tests/acceptance/onboarding/success-test.js @@ -4,10 +4,12 @@ */ import { module, test } from 'qunit'; -import { visit, currentURL, find, click, fillIn } from '@ember/test-helpers'; +import { visit, currentURL, click, fillIn } from '@ember/test-helpers'; import { setupApplicationTest } from 'admin/tests/helpers'; import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import { authenticateSession } from 'ember-simple-auth/test-support'; +import * as selectors from './selectors'; +import * as commonSelectors from 'admin/tests/helpers/selectors'; module('Acceptance | onboarding | success', function (hooks) { setupApplicationTest(hooks); @@ -22,32 +24,38 @@ module('Acceptance | onboarding | success', function (hooks) { success: '/onboarding/success', target: null, }; - const doneButtonSelector = '[data-test-onboarding-done-button]'; test('check if the done button is present', async function (assert) { await visit(urls.success); - assert.dom(doneButtonSelector).isVisible(); + + assert.dom(selectors.DONE_BTN).isVisible(); }); test('check the controller url is copyable', async function (assert) { const origin = window.location.origin; await visit(urls.success); - assert.dom('.hds-copy-snippet__text').isVisible(); - assert.strictEqual( - find('.hds-copy-snippet__text').textContent.trim(), - origin, - ); + + assert.dom(selectors.COPY_TEXT_BTN).isVisible().hasText(origin); }); test('fill the onboarding form and redirect user to target detail when done is clicked', async function (assert) { await visit(urls.onboarding); - await fillIn('[name="targetAddress"]', '0.0.0.0'); - await fillIn('[name="targetPort"]', '22'); - await click('[type="submit"]'); - await click(doneButtonSelector); - const projectId = this.server.db.scopes.where({ type: 'project' })[0].id; - const targetId = this.server.db.targets[0].id; + await fillIn( + selectors.FIELD_TARGET_ADDRESS, + selectors.FIELD_TARGET_ADDRESS_VALUE, + ); + await fillIn( + selectors.FIELD_TARGET_PORT, + selectors.FIELD_TARGET_PORT_VALUE, + ); + await click(commonSelectors.SAVE_BTN); + + await click(selectors.DONE_BTN); + const projectId = this.server.schema.scopes.where({ type: 'project' }) + .models[0].id; + const targetId = this.server.schema.targets.all().models[0].id; urls.target = `/scopes/${projectId}/targets/${targetId}`; + assert.strictEqual(currentURL(), urls.target); }); });