mirror of
https://github.com/nasa/openmct.git
synced 2024-12-21 06:03:08 +00:00
fce98a1c47
* refactor: move package.json to type: module this is where the fun begins * chore: move webpack common and prod to esm * chore: move webpack to esm, eslint to explicit cjs * refactor: migrate all files to esm * style: lint * refactor: begin moving karma to cjs, use dynamic esm import * refactor: move index-test to cjs * refactor: begin moving e2e to ESM this was manual. I'm committing this because I'm about to try the `cjstoesm` tool * refactor: move all to esm * fix: make all e2e tests use .js imports * refactor: begin moving exports to esm * refactor: use URL transforms instead of __dirname * fix: use libraryExport: default to properly handle openmct * fix: export all playwright configs as modules * refactor: move all instances of __dirname to import.meta.url * refactor: lint, drop unnecessary URL call * fix: use correct URL path on helper/addNoneditableObject.js * fix: more incorrect URL resolve issues * fix: parse json after reading it
255 lines
10 KiB
JavaScript
255 lines
10 KiB
JavaScript
/*****************************************************************************
|
|
* Open MCT, Copyright (c) 2014-2023, United States Government
|
|
* as represented by the Administrator of the National Aeronautics and Space
|
|
* Administration. All rights reserved.
|
|
*
|
|
* Open MCT is licensed under the Apache License, Version 2.0 (the
|
|
* "License"); you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
* http://www.apache.org/licenses/LICENSE-2.0.
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations
|
|
* under the License.
|
|
*
|
|
* Open MCT includes source code licensed under additional open source
|
|
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
|
* this source code distribution or the Licensing information page available
|
|
* at runtime from the About dialog for additional information.
|
|
*****************************************************************************/
|
|
|
|
import * as utils from '../../../../helper/faultUtils.js';
|
|
import { expect, test } from '../../../../pluginFixtures.js';
|
|
|
|
test.describe('The Fault Management Plugin using example faults', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await utils.navigateToFaultManagementWithExample(page);
|
|
});
|
|
|
|
test('Shows a criticality icon for every fault @unstable', async ({ page }) => {
|
|
const faultCount = await page.locator('c-fault-mgmt__list').count();
|
|
const criticalityIconCount = await page.locator('c-fault-mgmt__list-severity').count();
|
|
|
|
expect.soft(faultCount).toEqual(criticalityIconCount);
|
|
});
|
|
|
|
test('When selecting a fault, it has an "is-selected" class and it\'s information shows in the inspector @unstable', async ({
|
|
page
|
|
}) => {
|
|
await utils.selectFaultItem(page, 1);
|
|
|
|
await page.getByRole('tab', { name: 'Config' }).click();
|
|
const selectedFaultName = await page
|
|
.locator('.c-fault-mgmt__list.is-selected .c-fault-mgmt__list-faultname')
|
|
.textContent();
|
|
const inspectorFaultNameCount = await page
|
|
.locator(`.c-inspector__properties >> :text("${selectedFaultName}")`)
|
|
.count();
|
|
|
|
await expect
|
|
.soft(page.locator('.c-faults-list-view-item-body > .c-fault-mgmt__list').first())
|
|
.toHaveClass(/is-selected/);
|
|
expect.soft(inspectorFaultNameCount).toEqual(1);
|
|
});
|
|
|
|
test('When selecting multiple faults, no specific fault information is shown in the inspector @unstable', async ({
|
|
page
|
|
}) => {
|
|
await utils.selectFaultItem(page, 1);
|
|
await utils.selectFaultItem(page, 2);
|
|
|
|
const selectedRows = page.locator(
|
|
'.c-fault-mgmt__list.is-selected .c-fault-mgmt__list-faultname'
|
|
);
|
|
expect.soft(await selectedRows.count()).toEqual(2);
|
|
|
|
await page.getByRole('tab', { name: 'Config' }).click();
|
|
const firstSelectedFaultName = await selectedRows.nth(0).textContent();
|
|
const secondSelectedFaultName = await selectedRows.nth(1).textContent();
|
|
const firstNameInInspectorCount = await page
|
|
.locator(`.c-inspector__properties >> :text("${firstSelectedFaultName}")`)
|
|
.count();
|
|
const secondNameInInspectorCount = await page
|
|
.locator(`.c-inspector__properties >> :text("${secondSelectedFaultName}")`)
|
|
.count();
|
|
|
|
expect.soft(firstNameInInspectorCount).toEqual(0);
|
|
expect.soft(secondNameInInspectorCount).toEqual(0);
|
|
});
|
|
|
|
test('Allows you to shelve a fault @unstable', async ({ page }) => {
|
|
const shelvedFaultName = await utils.getFaultName(page, 2);
|
|
const beforeShelvedFault = utils.getFaultByName(page, shelvedFaultName);
|
|
|
|
expect.soft(await beforeShelvedFault.count()).toBe(1);
|
|
|
|
await utils.shelveFault(page, 2);
|
|
|
|
// check it is removed from standard view
|
|
const afterShelvedFault = utils.getFaultByName(page, shelvedFaultName);
|
|
expect.soft(await afterShelvedFault.count()).toBe(0);
|
|
|
|
await utils.changeViewTo(page, 'shelved');
|
|
|
|
const shelvedViewFault = utils.getFaultByName(page, shelvedFaultName);
|
|
|
|
expect.soft(await shelvedViewFault.count()).toBe(1);
|
|
});
|
|
|
|
test('Allows you to acknowledge a fault @unstable', async ({ page }) => {
|
|
const acknowledgedFaultName = await utils.getFaultName(page, 3);
|
|
|
|
await utils.acknowledgeFault(page, 3);
|
|
|
|
const fault = utils.getFault(page, 3);
|
|
await expect.soft(fault).toHaveClass(/is-acknowledged/);
|
|
|
|
await utils.changeViewTo(page, 'acknowledged');
|
|
|
|
const acknowledgedViewFaultName = await utils.getFaultName(page, 1);
|
|
expect.soft(acknowledgedFaultName).toEqual(acknowledgedViewFaultName);
|
|
});
|
|
|
|
test('Allows you to shelve multiple faults @unstable', async ({ page }) => {
|
|
const shelvedFaultNameOne = await utils.getFaultName(page, 1);
|
|
const shelvedFaultNameFour = await utils.getFaultName(page, 4);
|
|
|
|
const beforeShelvedFaultOne = utils.getFaultByName(page, shelvedFaultNameOne);
|
|
const beforeShelvedFaultFour = utils.getFaultByName(page, shelvedFaultNameFour);
|
|
|
|
expect.soft(await beforeShelvedFaultOne.count()).toBe(1);
|
|
expect.soft(await beforeShelvedFaultFour.count()).toBe(1);
|
|
|
|
await utils.shelveMultipleFaults(page, 1, 4);
|
|
|
|
// check it is removed from standard view
|
|
const afterShelvedFaultOne = utils.getFaultByName(page, shelvedFaultNameOne);
|
|
const afterShelvedFaultFour = utils.getFaultByName(page, shelvedFaultNameFour);
|
|
expect.soft(await afterShelvedFaultOne.count()).toBe(0);
|
|
expect.soft(await afterShelvedFaultFour.count()).toBe(0);
|
|
|
|
await utils.changeViewTo(page, 'shelved');
|
|
|
|
const shelvedViewFaultOne = utils.getFaultByName(page, shelvedFaultNameOne);
|
|
const shelvedViewFaultFour = utils.getFaultByName(page, shelvedFaultNameFour);
|
|
|
|
expect.soft(await shelvedViewFaultOne.count()).toBe(1);
|
|
expect.soft(await shelvedViewFaultFour.count()).toBe(1);
|
|
});
|
|
|
|
test('Allows you to acknowledge multiple faults @unstable', async ({ page }) => {
|
|
const acknowledgedFaultNameTwo = await utils.getFaultName(page, 2);
|
|
const acknowledgedFaultNameFive = await utils.getFaultName(page, 5);
|
|
|
|
await utils.acknowledgeMultipleFaults(page, 2, 5);
|
|
|
|
const faultTwo = utils.getFault(page, 2);
|
|
const faultFive = utils.getFault(page, 5);
|
|
|
|
// check they have been acknowledged
|
|
await expect.soft(faultTwo).toHaveClass(/is-acknowledged/);
|
|
await expect.soft(faultFive).toHaveClass(/is-acknowledged/);
|
|
|
|
await utils.changeViewTo(page, 'acknowledged');
|
|
|
|
const acknowledgedViewFaultTwo = utils.getFaultByName(page, acknowledgedFaultNameTwo);
|
|
const acknowledgedViewFaultFive = utils.getFaultByName(page, acknowledgedFaultNameFive);
|
|
|
|
expect.soft(await acknowledgedViewFaultTwo.count()).toBe(1);
|
|
expect.soft(await acknowledgedViewFaultFive.count()).toBe(1);
|
|
});
|
|
|
|
test('Allows you to search faults @unstable', async ({ page }) => {
|
|
const faultThreeNamespace = await utils.getFaultNamespace(page, 3);
|
|
const faultTwoName = await utils.getFaultName(page, 2);
|
|
const faultFiveTriggerTime = await utils.getFaultTriggerTime(page, 5);
|
|
|
|
// should be all faults (5)
|
|
let faultResultCount = await utils.getFaultResultCount(page);
|
|
expect.soft(faultResultCount).toEqual(5);
|
|
|
|
// search namespace
|
|
await utils.enterSearchTerm(page, faultThreeNamespace);
|
|
|
|
faultResultCount = await utils.getFaultResultCount(page);
|
|
expect.soft(faultResultCount).toEqual(1);
|
|
expect.soft(await utils.getFaultNamespace(page, 1)).toEqual(faultThreeNamespace);
|
|
|
|
// all faults
|
|
await utils.clearSearch(page);
|
|
faultResultCount = await utils.getFaultResultCount(page);
|
|
expect.soft(faultResultCount).toEqual(5);
|
|
|
|
// search name
|
|
await utils.enterSearchTerm(page, faultTwoName);
|
|
|
|
faultResultCount = await utils.getFaultResultCount(page);
|
|
expect.soft(faultResultCount).toEqual(1);
|
|
expect.soft(await utils.getFaultName(page, 1)).toEqual(faultTwoName);
|
|
|
|
// all faults
|
|
await utils.clearSearch(page);
|
|
faultResultCount = await utils.getFaultResultCount(page);
|
|
expect.soft(faultResultCount).toEqual(5);
|
|
|
|
// search triggerTime
|
|
await utils.enterSearchTerm(page, faultFiveTriggerTime);
|
|
|
|
faultResultCount = await utils.getFaultResultCount(page);
|
|
expect.soft(faultResultCount).toEqual(1);
|
|
expect.soft(await utils.getFaultTriggerTime(page, 1)).toEqual(faultFiveTriggerTime);
|
|
});
|
|
|
|
test('Allows you to sort faults @unstable', async ({ page }) => {
|
|
const highestSeverity = await utils.getHighestSeverity(page);
|
|
const lowestSeverity = await utils.getLowestSeverity(page);
|
|
const faultOneName = 'Example Fault 1';
|
|
const faultFiveName = 'Example Fault 5';
|
|
let firstFaultName = await utils.getFaultName(page, 1);
|
|
|
|
expect.soft(firstFaultName).toEqual(faultOneName);
|
|
|
|
await utils.sortFaultsBy(page, 'oldest-first');
|
|
|
|
firstFaultName = await utils.getFaultName(page, 1);
|
|
expect.soft(firstFaultName).toEqual(faultFiveName);
|
|
|
|
await utils.sortFaultsBy(page, 'severity');
|
|
|
|
const sortedHighestSeverity = await utils.getFaultSeverity(page, 1);
|
|
const sortedLowestSeverity = await utils.getFaultSeverity(page, 5);
|
|
expect.soft(sortedHighestSeverity).toEqual(highestSeverity);
|
|
expect.soft(sortedLowestSeverity).toEqual(lowestSeverity);
|
|
});
|
|
});
|
|
|
|
test.describe('The Fault Management Plugin without using example faults', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await utils.navigateToFaultManagementWithoutExample(page);
|
|
});
|
|
|
|
test('Shows no faults when no faults are provided @unstable', async ({ page }) => {
|
|
const faultCount = await page.locator('c-fault-mgmt__list').count();
|
|
|
|
expect.soft(faultCount).toEqual(0);
|
|
|
|
await utils.changeViewTo(page, 'acknowledged');
|
|
const acknowledgedCount = await page.locator('c-fault-mgmt__list').count();
|
|
expect.soft(acknowledgedCount).toEqual(0);
|
|
|
|
await utils.changeViewTo(page, 'shelved');
|
|
const shelvedCount = await page.locator('c-fault-mgmt__list').count();
|
|
expect.soft(shelvedCount).toEqual(0);
|
|
});
|
|
|
|
test('Will return no faults when searching @unstable', async ({ page }) => {
|
|
await utils.enterSearchTerm(page, 'fault');
|
|
|
|
const faultCount = await page.locator('c-fault-mgmt__list').count();
|
|
|
|
expect.soft(faultCount).toEqual(0);
|
|
});
|
|
});
|