refactor: migrate to ESM (#7331)

* 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
This commit is contained in:
Tristan F
2024-01-02 10:24:22 -05:00
committed by GitHub
parent 68e60e332e
commit fce98a1c47
485 changed files with 1220 additions and 1190 deletions

View File

@@ -24,7 +24,7 @@
This test suite is dedicated to tests which verify branding related components.
*/
const { test, expect } = require('../../baseFixtures.js');
import { expect, test } from '../../baseFixtures.js';
test.describe('Branding tests', () => {
test('About Modal launches with basic branding properties', async ({ page }) => {

View File

@@ -24,8 +24,8 @@
Verify that the "Clear Data" menu action performs as expected for various object types.
*/
const { test, expect } = require('../../pluginFixtures.js');
const { createDomainObjectWithDefaults } = require('../../appActions.js');
import { createDomainObjectWithDefaults } from '../../appActions.js';
import { expect, test } from '../../pluginFixtures.js';
const backgroundImageSelector = '.c-imagery__main-image__background-image';

View File

@@ -25,7 +25,7 @@
*
*/
const { test, expect } = require('../../pluginFixtures');
import { expect, test } from '../../pluginFixtures.js';
test.describe('CouchDB Status Indicator with mocked responses @couchdb', () => {
test.use({ failOnConsoleError: false });

View File

@@ -24,8 +24,8 @@
This test suite is dedicated to tests which verify the basic operations surrounding the example event generator.
*/
const { test, expect } = require('../../../pluginFixtures');
const { createDomainObjectWithDefaults } = require('../../../appActions');
import { createDomainObjectWithDefaults } from '../../../appActions.js';
import { expect, test } from '../../../pluginFixtures.js';
test.describe('Example Event Generator CRUD Operations', () => {
test('Can create a Test Event Generator and it results in the table View', async ({ page }) => {

View File

@@ -24,7 +24,7 @@
This test suite is dedicated to tests which verify the basic operations surrounding conditionSets.
*/
const { test, expect } = require('../../../../baseFixtures');
import { expect, test } from '../../../../baseFixtures.js';
test.describe('Sine Wave Generator', () => {
test('Create new Sine Wave Generator Object and validate create Form Logic', async ({

View File

@@ -19,15 +19,16 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/* global __dirname */
/*
This test suite is dedicated to tests which verify form functionality in isolation
*/
const { test, expect } = require('../../pluginFixtures');
const { createDomainObjectWithDefaults } = require('../../appActions');
const genUuid = require('uuid').v4;
const path = require('path');
import { fileURLToPath } from 'url';
import { v4 as genUuid } from 'uuid';
import { createDomainObjectWithDefaults } from '../../appActions.js';
import { expect, test } from '../../pluginFixtures.js';
const TEST_FOLDER = 'test folder';
const jsonFilePath = 'e2e/test-data/ExampleLayouts.json';
@@ -72,7 +73,7 @@ test.describe('Form Validation Behavior', () => {
test.describe('Form File Input Behavior', () => {
test.beforeEach(async ({ page }) => {
await page.addInitScript({
path: path.join(__dirname, '../../helper', 'addInitFileInputObject.js')
path: fileURLToPath(new URL('../../helper/addInitFileInputObject.js', import.meta.url))
});
});
@@ -109,7 +110,7 @@ test.describe('Persistence operations @addInit', () => {
// add non persistable root item
test.beforeEach(async ({ page }) => {
await page.addInitScript({
path: path.join(__dirname, '../../helper', 'addNoneditableObject.js')
path: fileURLToPath(new URL('../../helper/addNoneditableObject.js', import.meta.url))
});
});

View File

@@ -19,20 +19,20 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/* global __dirname */
/*
This test suite is dedicated to tests which verify persistability checks
*/
const { test, expect } = require('../../baseFixtures.js');
import { fileURLToPath } from 'url';
const path = require('path');
import { expect, test } from '../../baseFixtures.js';
test.describe('Persistence operations @addInit', () => {
// add non persistable root item
test.beforeEach(async ({ page }) => {
await page.addInitScript({
path: path.join(__dirname, '../../helper', 'addNoneditableObject.js')
path: fileURLToPath(new URL('../../helper/addNoneditableObject.js', import.meta.url))
});
});

View File

@@ -24,8 +24,8 @@
This test suite is dedicated to tests which verify the basic operations surrounding moving & linking objects.
*/
const { test, expect } = require('../../pluginFixtures');
const { createDomainObjectWithDefaults } = require('../../appActions');
import { createDomainObjectWithDefaults } from '../../appActions.js';
import { expect, test } from '../../pluginFixtures.js';
test.describe('Move & link item tests', () => {
test('Create a basic object and verify that it can be moved to another folder', async ({

View File

@@ -24,8 +24,8 @@
This test suite is dedicated to tests which verify Open MCT's Notification functionality
*/
const { createDomainObjectWithDefaults, createNotification } = require('../../appActions');
const { test, expect } = require('../../pluginFixtures');
import { createDomainObjectWithDefaults, createNotification } from '../../appActions.js';
import { expect, test } from '../../pluginFixtures.js';
test.describe('Notifications List', () => {
test.fixme('Notifications can be dismissed individually', async ({ page }) => {

View File

@@ -19,15 +19,26 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
const { test, expect } = require('../../../pluginFixtures');
const { createPlanFromJSON, createDomainObjectWithDefaults } = require('../../../appActions');
const testPlan1 = require('../../../test-data/examplePlans/ExamplePlan_Small1.json');
const testPlan2 = require('../../../test-data/examplePlans/ExamplePlan_Small2.json');
const {
import fs from 'fs';
import { getPreciseDuration } from '../../../../src/utils/duration.js';
import { createDomainObjectWithDefaults, createPlanFromJSON } from '../../../appActions.js';
import {
assertPlanActivities,
setBoundsToSpanAllActivities
} = require('../../../helper/planningUtils');
const { getPreciseDuration } = require('../../../../src/utils/duration');
} from '../../../helper/planningUtils.js';
import { expect, test } from '../../../pluginFixtures.js';
const testPlan1 = JSON.parse(
fs.readFileSync(
new URL('../../../test-data/examplePlans/ExamplePlan_Small1.json', import.meta.url)
)
);
const testPlan2 = JSON.parse(
fs.readFileSync(
new URL('../../../test-data/examplePlans/ExamplePlan_Small2.json', import.meta.url)
)
);
test.describe('Gantt Chart', () => {
let ganttChart;

View File

@@ -19,15 +19,27 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
const { test } = require('../../../pluginFixtures');
const { createPlanFromJSON } = require('../../../appActions');
const { addPlanGetInterceptor } = require('../../../helper/planningUtils.js');
const testPlan1 = require('../../../test-data/examplePlans/ExamplePlan_Small1.json');
const testPlanWithOrderedLanes = require('../../../test-data/examplePlans/ExamplePlanWithOrderedLanes.json');
const {
import fs from 'fs';
import { createPlanFromJSON } from '../../../appActions.js';
import {
addPlanGetInterceptor,
assertPlanActivities,
assertPlanOrderedSwimLanes
} = require('../../../helper/planningUtils');
} from '../../../helper/planningUtils.js';
import { test } from '../../../pluginFixtures.js';
const testPlan1 = JSON.parse(
fs.readFileSync(
new URL('../../../test-data/examplePlans/ExamplePlan_Small1.json', import.meta.url)
)
);
const testPlanWithOrderedLanes = JSON.parse(
fs.readFileSync(
new URL('../../../test-data/examplePlans/ExamplePlanWithOrderedLanes.json', import.meta.url)
)
);
test.describe('Plan', () => {
let plan;

View File

@@ -20,8 +20,8 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
const { test, expect } = require('../../../pluginFixtures');
const { createDomainObjectWithDefaults, createPlanFromJSON } = require('../../../appActions');
import { createDomainObjectWithDefaults, createPlanFromJSON } from '../../../appActions.js';
import { expect, test } from '../../../pluginFixtures.js';
const testPlan = {
TEST_GROUP: [

View File

@@ -20,12 +20,12 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
const { test, expect } = require('../../../pluginFixtures');
const {
import {
createDomainObjectWithDefaults,
createPlanFromJSON,
setIndependentTimeConductorBounds
} = require('../../../appActions');
} from '../../../appActions.js';
import { expect, test } from '../../../pluginFixtures.js';
const testPlan = {
TEST_GROUP: [

View File

@@ -24,7 +24,7 @@
This test suite is dedicated to tests which verify the basic operations surrounding Clock.
*/
const { test, expect } = require('../../../../baseFixtures');
import { expect, test } from '../../../../baseFixtures.js';
test.describe('Clock Generator CRUD Operations', () => {
test('Timezone dropdown will collapse when clicked outside or on dropdown icon again', async ({

View File

@@ -22,7 +22,7 @@
// FIXME: Remove this eslint exception once tests are implemented
// eslint-disable-next-line no-unused-vars
const { test, expect } = require('../../../../baseFixtures');
import { expect, test } from '../../../../baseFixtures.js';
test.describe('Remote Clock', () => {
// eslint-disable-next-line require-await

View File

@@ -19,19 +19,19 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/* global __dirname */
/*
This test suite is dedicated to tests which verify the basic operations surrounding conditionSets. Note: this
suite is sharing state between tests which is considered an anti-pattern. Implementing in this way to
demonstrate some playwright for test developers. This pattern should not be re-used in other CRUD suites.
*/
const { test, expect } = require('../../../../pluginFixtures.js');
const {
import { fileURLToPath } from 'url';
import {
createDomainObjectWithDefaults,
createExampleTelemetryObject
} = require('../../../../appActions');
const path = require('path');
} from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
let conditionSetUrl;
let getConditionSetIdentifierFromUrl;
@@ -50,7 +50,9 @@ test.describe.serial('Condition Set CRUD Operations on @localStorage', () => {
//Save localStorage for future test execution
await context.storageState({
path: path.resolve(__dirname, '../../../../test-data/recycled_local_storage.json')
path: fileURLToPath(
new URL('../../../../test-data/recycled_local_storage.json', import.meta.url)
)
});
//Set object identifier from url
@@ -63,7 +65,9 @@ test.describe.serial('Condition Set CRUD Operations on @localStorage', () => {
//Load localStorage for subsequent tests
test.use({
storageState: path.resolve(__dirname, '../../../../test-data/recycled_local_storage.json')
storageState: fileURLToPath(
new URL('../../../../test-data/recycled_local_storage.json', import.meta.url)
)
});
//Begin suite of tests again localStorage

View File

@@ -19,20 +19,19 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/* global __dirname */
const { test, expect } = require('../../../../pluginFixtures');
const path = require('path');
const {
createDomainObjectWithDefaults,
setStartOffset,
setFixedTimeMode,
setRealTimeMode,
setIndependentTimeConductorBounds
} = require('../../../../appActions');
import { fileURLToPath } from 'url';
const LOCALSTORAGE_PATH = path.resolve(
__dirname,
'../../../../test-data/display_layout_with_child_layouts.json'
import {
createDomainObjectWithDefaults,
setFixedTimeMode,
setIndependentTimeConductorBounds,
setRealTimeMode,
setStartOffset
} from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
const LOCALSTORAGE_PATH = fileURLToPath(
new URL('../../../../test-data/display_layout_with_child_layouts.json', import.meta.url)
);
const TINY_IMAGE_BASE64 =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII';
@@ -51,7 +50,7 @@ test.describe('Display Layout Toolbar Actions @localStorage', () => {
await page.getByLabel('Edit').click();
});
test.use({
storageState: path.resolve(__dirname, LOCALSTORAGE_PATH)
storageState: LOCALSTORAGE_PATH
});
test('can add/remove Text element to a single layout', async ({ page }) => {

View File

@@ -20,8 +20,8 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
const { test, expect } = require('../../../../pluginFixtures');
const utils = require('../../../../helper/faultUtils');
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 }) => {

View File

@@ -19,18 +19,17 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/* global __dirname */
const { test, expect } = require('../../../../pluginFixtures');
const {
import { fileURLToPath } from 'url';
import {
createDomainObjectWithDefaults,
setIndependentTimeConductorBounds
} = require('../../../../appActions');
const path = require('path');
} from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
const LOCALSTORAGE_PATH = path.resolve(
__dirname,
'../../../../test-data/flexible_layout_with_child_layouts.json'
const LOCALSTORAGE_PATH = fileURLToPath(
new URL('../../../../test-data/flexible_layout_with_child_layouts.json', import.meta.url)
);
test.describe('Flexible Layout', () => {
@@ -267,7 +266,7 @@ test.describe('Flexible Layout', () => {
test.describe('Flexible Layout Toolbar Actions @localStorage', () => {
test.use({
storageState: path.resolve(__dirname, LOCALSTORAGE_PATH)
storageState: LOCALSTORAGE_PATH
});
test.beforeEach(async ({ page }) => {

View File

@@ -24,12 +24,13 @@
* This test suite is dedicated to testing the Gauge component.
*/
const { test, expect } = require('../../../../pluginFixtures');
const {
import { v4 as uuid } from 'uuid';
import {
createDomainObjectWithDefaults,
createExampleTelemetryObject
} = require('../../../../appActions');
const uuid = require('uuid').v4;
} from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Gauge', () => {
test.beforeEach(async ({ page }) => {

View File

@@ -25,9 +25,9 @@ This test suite is dedicated to tests which verify the basic operations surround
but only assume that example imagery is present.
*/
/* globals process */
const { waitForAnimations } = require('../../../../baseFixtures');
const { test, expect } = require('../../../../pluginFixtures');
const { createDomainObjectWithDefaults, setRealTimeMode } = require('../../../../appActions');
import { createDomainObjectWithDefaults, setRealTimeMode } from '../../../../appActions.js';
import { waitForAnimations } from '../../../../baseFixtures.js';
import { expect, test } from '../../../../pluginFixtures.js';
const backgroundImageSelector = '.c-imagery__main-image__background-image';
const panHotkey = process.platform === 'linux' ? ['Shift', 'Alt'] : ['Alt'];
const tagHotkey = ['Shift', 'Alt'];

View File

@@ -26,7 +26,7 @@ This test suite is dedicated to tests which verify the basic operations surround
// FIXME: Remove this eslint exception once tests are implemented
// eslint-disable-next-line no-unused-vars
const { test, expect } = require('../../../../baseFixtures');
import { expect, test } from '../../../../baseFixtures.js';
test.describe('ExportAsJSON', () => {
test.fixme(

View File

@@ -26,7 +26,7 @@ This test suite is dedicated to tests which verify the basic operations surround
// FIXME: Remove this eslint exception once tests are implemented
// eslint-disable-next-line no-unused-vars
const { test, expect } = require('../../../../baseFixtures');
import { expect, test } from '../../../../baseFixtures.js';
test.describe('ExportAsJSON', () => {
test.fixme('Verify that domain object can be importAsJSON from Tree', async ({ page }) => {

View File

@@ -19,17 +19,19 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/* global __dirname */
const { test, expect } = require('../../../../pluginFixtures');
const { createDomainObjectWithDefaults } = require('../../../../appActions');
const path = require('path');
import { fileURLToPath } from 'url';
import { createDomainObjectWithDefaults } from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Testing numeric data with inspector data visualization (i.e., data pivoting)', () => {
test.beforeEach(async ({ page }) => {
// eslint-disable-next-line no-undef
await page.addInitScript({
path: path.join(__dirname, '../../../../helper/', 'addInitDataVisualization.js')
path: fileURLToPath(
new URL('../../../../helper/addInitDataVisualization.js', import.meta.url)
)
});
await page.goto('./', { waitUntil: 'domcontentloaded' });
});

View File

@@ -20,14 +20,14 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
const { test, expect } = require('../../../../pluginFixtures');
const {
import {
createDomainObjectWithDefaults,
setStartOffset,
openObjectTreeContextMenu,
setFixedTimeMode,
setRealTimeMode,
openObjectTreeContextMenu
} = require('../../../../appActions');
setStartOffset
} from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Testing LAD table configuration', () => {
let ladTable;

View File

@@ -19,15 +19,16 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/* global __dirname */
/*
This test suite is dedicated to tests which verify the basic operations surrounding Notebooks.
*/
const { test, expect, streamToString } = require('../../../../pluginFixtures');
const { createDomainObjectWithDefaults } = require('../../../../appActions');
const nbUtils = require('../../../../helper/notebookUtils');
const path = require('path');
import { fileURLToPath } from 'url';
import { createDomainObjectWithDefaults } from '../../../../appActions.js';
import * as nbUtils from '../../../../helper/notebookUtils.js';
import { expect, streamToString, test } from '../../../../pluginFixtures.js';
const NOTEBOOK_NAME = 'Notebook';
@@ -278,7 +279,7 @@ test.describe('Notebook entry tests', () => {
test.beforeEach(async ({ page }) => {
// eslint-disable-next-line no-undef
await page.addInitScript({
path: path.join(__dirname, '../../../../helper/', 'addInitNotebookWithUrls.js')
path: fileURLToPath(new URL('../../../../helper/addInitNotebookWithUrls.js', import.meta.url))
});
await page.goto('./', { waitUntil: 'domcontentloaded' });

View File

@@ -19,15 +19,16 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/* global __dirname */
/*
This test suite is dedicated to tests which verify the basic operations surrounding Notebooks.
*/
const fs = require('fs').promises;
const path = require('path');
const { test, expect } = require('../../../../pluginFixtures');
const { createDomainObjectWithDefaults } = require('../../../../appActions');
import fs from 'fs/promises';
import { fileURLToPath } from 'url';
import { createDomainObjectWithDefaults } from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
const NOTEBOOK_NAME = 'Notebook';
@@ -178,7 +179,9 @@ test.describe('Snapshot image tests', () => {
test('Can drop an image onto a notebook and create a new entry', async ({ page }) => {
const imageData = await fs.readFile(
path.resolve(__dirname, '../../../../../src/images/favicons/favicon-96x96.png')
fileURLToPath(
new URL('../../../../../src/images/favicons/favicon-96x96.png', import.meta.url)
)
);
const imageArray = new Uint8Array(imageData);
const fileData = Array.from(imageArray);

View File

@@ -24,9 +24,9 @@
This test suite is dedicated to tests which verify the basic operations surrounding Notebooks with CouchDB.
*/
const { test, expect } = require('../../../../pluginFixtures');
const { createDomainObjectWithDefaults } = require('../../../../appActions');
const nbUtils = require('../../../../helper/notebookUtils');
import { createDomainObjectWithDefaults } from '../../../../appActions.js';
import * as nbUtils from '../../../../helper/notebookUtils.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Notebook Tests with CouchDB @couchdb', () => {
let testNotebook;

View File

@@ -20,14 +20,14 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
const { test, expect, streamToString } = require('../../../../pluginFixtures');
const { openObjectTreeContextMenu } = require('../../../../appActions');
const {
lockPage,
import { openObjectTreeContextMenu } from '../../../../appActions.js';
import {
dragAndDropEmbed,
enterTextEntry,
lockPage,
startAndAddRestrictedNotebookObject
} = require('../../../../helper/notebookUtils');
} from '../../../../helper/notebookUtils.js';
import { expect, streamToString, test } from '../../../../pluginFixtures.js';
const TEST_TEXT = 'Testing text for entries.';
const TEST_TEXT_NAME = 'Test Page';

View File

@@ -24,13 +24,13 @@
This test suite is dedicated to tests which verify notebook tag functionality.
*/
const { test, expect } = require('../../../../pluginFixtures');
const { createDomainObjectWithDefaults } = require('../../../../appActions');
const {
enterTextEntry,
import { createDomainObjectWithDefaults } from '../../../../appActions.js';
import {
createNotebookAndEntry,
createNotebookEntryAndTags
} = require('../../../../helper/notebookUtils');
createNotebookEntryAndTags,
enterTextEntry
} from '../../../../helper/notebookUtils.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Tagging in Notebooks @addInit', () => {
test.beforeEach(async ({ page }) => {

View File

@@ -19,13 +19,13 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/* global __dirname */
/*
* This test suite is dedicated to testing the operator status plugin.
*/
const path = require('path');
const { test, expect } = require('../../../../pluginFixtures');
import { fileURLToPath } from 'url';
import { expect, test } from '../../../../pluginFixtures.js';
/*
@@ -41,10 +41,10 @@ test.describe('Operator Status', () => {
test.beforeEach(async ({ page }) => {
// FIXME: determine if plugins will be added to index.html or need to be injected
await page.addInitScript({
path: path.join(__dirname, '../../../../helper/', 'addInitExampleUser.js')
path: fileURLToPath(new URL('../../../../helper/addInitExampleUser.js', import.meta.url))
});
await page.addInitScript({
path: path.join(__dirname, '../../../../helper/', 'addInitOperatorStatus.js')
path: fileURLToPath(new URL('../../../../helper/addInitOperatorStatus.js', import.meta.url))
});
await page.goto('./', { waitUntil: 'domcontentloaded' });
await expect(page.getByText('Select Role')).toBeVisible();

View File

@@ -24,8 +24,8 @@
Testsuite for plot autoscale.
*/
const { createDomainObjectWithDefaults } = require('../../../../appActions');
const { test, expect } = require('../../../../pluginFixtures');
import { createDomainObjectWithDefaults } from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.use({
viewport: {
width: 1280,

View File

@@ -25,8 +25,8 @@ Tests to verify log plot functionality. Note this test suite if very much under
necessarily be used for reference when writing new tests in this area.
*/
const { test, expect } = require('../../../../pluginFixtures');
const { setTimeConductorBounds } = require('../../../../appActions');
import { setTimeConductorBounds } from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Log plot tests', () => {
test('Log Plot ticks are functionally correct in regular and log mode and after refresh', async ({

View File

@@ -24,7 +24,7 @@
Tests to verify log plot functionality when objects are missing
*/
const { test, expect } = require('../../../../pluginFixtures');
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Handle missing object for plots', () => {
test('Displays empty div for missing stacked plot item @unstable', async ({

View File

@@ -25,12 +25,12 @@ Tests to verify log plot functionality. Note this test suite if very much under
necessarily be used for reference when writing new tests in this area.
*/
const { test, expect } = require('../../../../pluginFixtures');
const {
import {
createDomainObjectWithDefaults,
getCanvasPixels,
waitForPlotsToRender
} = require('../../../../appActions');
} from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Overlay Plot', () => {
test.beforeEach(async ({ page }) => {

View File

@@ -25,8 +25,8 @@
*
*/
const { test, expect } = require('../../../../pluginFixtures');
const { createDomainObjectWithDefaults, getCanvasPixels } = require('../../../../appActions');
import { createDomainObjectWithDefaults, getCanvasPixels } from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Plot Rendering', () => {
let sineWaveGeneratorObject;

View File

@@ -24,9 +24,10 @@
* This test suite is dedicated to testing the Scatter Plot component.
*/
const { test, expect } = require('../../../../pluginFixtures');
const { createDomainObjectWithDefaults } = require('../../../../appActions');
const uuid = require('uuid').v4;
import { v4 as uuid } from 'uuid';
import { createDomainObjectWithDefaults } from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Scatter Plot', () => {
let scatterPlot;

View File

@@ -25,8 +25,8 @@ Tests to verify log plot functionality. Note this test suite if very much under
necessarily be used for reference when writing new tests in this area.
*/
const { test, expect } = require('../../../../pluginFixtures');
const { createDomainObjectWithDefaults, waitForPlotsToRender } = require('../../../../appActions');
import { createDomainObjectWithDefaults, waitForPlotsToRender } from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Stacked Plot', () => {
let stackedPlot;

View File

@@ -24,18 +24,14 @@
Tests to verify plot tagging functionality.
*/
const { test, expect } = require('../../../../pluginFixtures');
const {
basicTagsTests,
createTags,
testTelemetryItem
} = require('../../../../helper/plotTagsUtils');
const {
import {
createDomainObjectWithDefaults,
setRealTimeMode,
setFixedTimeMode,
setRealTimeMode,
waitForPlotsToRender
} = require('../../../../appActions');
} from '../../../../appActions.js';
import { basicTagsTests, createTags, testTelemetryItem } from '../../../../helper/plotTagsUtils.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Plot Tagging', () => {
test.beforeEach(async ({ page }) => {

View File

@@ -20,8 +20,8 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
const { createDomainObjectWithDefaults } = require('../../../../appActions');
const { test, expect } = require('../../../../pluginFixtures');
import { createDomainObjectWithDefaults } from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Tabs View', () => {
test('Renders tabbed elements', async ({ page }) => {

View File

@@ -20,11 +20,8 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
const {
createDomainObjectWithDefaults,
setTimeConductorBounds
} = require('../../../../appActions');
const { test, expect } = require('../../../../pluginFixtures');
import { createDomainObjectWithDefaults, setTimeConductorBounds } from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Telemetry Table', () => {
test('unpauses and filters data when paused by button and user changes bounds', async ({

View File

@@ -20,14 +20,14 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
const { test, expect } = require('../../../../pluginFixtures');
const {
import {
setEndOffset,
setFixedTimeMode,
setRealTimeMode,
setStartOffset,
setEndOffset,
setTimeConductorBounds
} = require('../../../../appActions');
} from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Time conductor operations', () => {
test('validate start time does not exceeds end time', async ({ page }) => {

View File

@@ -20,12 +20,12 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
const { test, expect } = require('../../../../pluginFixtures');
const {
openObjectTreeContextMenu,
createDomainObjectWithDefaults
} = require('../../../../appActions');
import { MISSION_TIME } from '../../../../constants';
import {
createDomainObjectWithDefaults,
openObjectTreeContextMenu
} from '../../../../appActions.js';
import { MISSION_TIME } from '../../../../constants.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Timer', () => {
let timer;

View File

@@ -20,9 +20,9 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
const { test, expect } = require('../../pluginFixtures.js');
const { createDomainObjectWithDefaults } = require('../../appActions.js');
const { waitForAnimations } = require('../../baseFixtures.js');
import { createDomainObjectWithDefaults } from '../../appActions.js';
import { waitForAnimations } from '../../baseFixtures.js';
import { expect, test } from '../../pluginFixtures.js';
test.describe('Recent Objects', () => {
/** @type {import('@playwright/test').Locator} */

View File

@@ -24,11 +24,8 @@
This test suite is dedicated to tests for renaming objects, and their global application effects.
*/
const { test, expect } = require('../../baseFixtures.js');
const {
createDomainObjectWithDefaults,
renameObjectFromContextMenu
} = require('../../appActions.js');
import { createDomainObjectWithDefaults, renameObjectFromContextMenu } from '../../appActions.js';
import { expect, test } from '../../baseFixtures.js';
test.describe('Renaming objects', () => {
test.beforeEach(async ({ page }) => {

View File

@@ -23,9 +23,10 @@
* This test suite is dedicated to tests which verify search functionalities.
*/
const { test, expect } = require('../../pluginFixtures');
const { createDomainObjectWithDefaults } = require('../../appActions');
const { v4: uuid } = require('uuid');
import { v4 as uuid } from 'uuid';
import { createDomainObjectWithDefaults } from '../../appActions.js';
import { expect, test } from '../../pluginFixtures.js';
test.describe('Grand Search', () => {
const searchResultSelector = '.c-gsearch-result__title';

View File

@@ -33,7 +33,7 @@ comfortable running this test during a live mission?" Avoid creating or deleting
Make no assumptions about the order that elements appear in the DOM.
*/
const { test, expect } = require('../../pluginFixtures');
import { expect, test } from '../../pluginFixtures.js';
test('Verify that the create button appears and that the Folder Domain Object is available for selection', async ({
page

View File

@@ -33,8 +33,8 @@ comfortable running this test during a live mission?" Avoid creating or deleting
Make no assumptions about the order that elements appear in the DOM.
*/
const { test, expect } = require('../../pluginFixtures');
const { createDomainObjectWithDefaults, expandEntireTree } = require('../../appActions');
import { createDomainObjectWithDefaults, expandEntireTree } from '../../appActions.js';
import { expect, test } from '../../pluginFixtures.js';
test.describe('Verify tooltips', () => {
let folder1;

View File

@@ -20,11 +20,8 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
const { test, expect } = require('../../pluginFixtures.js');
const {
createDomainObjectWithDefaults,
renameObjectFromContextMenu
} = require('../../appActions.js');
import { createDomainObjectWithDefaults, renameObjectFromContextMenu } from '../../appActions.js';
import { expect, test } from '../../pluginFixtures.js';
test.describe('Main Tree', () => {
test.beforeEach(async ({ page }) => {