From 11c2d0286e2a58c05cc29c964102a13570bde5f9 Mon Sep 17 00:00:00 2001 From: Scott Bell Date: Wed, 18 Dec 2024 11:28:13 +0100 Subject: [PATCH] add tests --- ...mple-events.js => make-example-events.mjs} | 9 ++- package.json | 2 +- tests/e2e/yamcs/timeline.e2e.spec.mjs | 61 +++++++++++++++++++ 3 files changed, 69 insertions(+), 3 deletions(-) rename example/{make-example-events.js => make-example-events.mjs} (94%) create mode 100644 tests/e2e/yamcs/timeline.e2e.spec.mjs diff --git a/example/make-example-events.js b/example/make-example-events.mjs similarity index 94% rename from example/make-example-events.js rename to example/make-example-events.mjs index 9f317298..aa8ab162 100644 --- a/example/make-example-events.js +++ b/example/make-example-events.mjs @@ -1,3 +1,5 @@ +import process from 'process'; + const INSTANCE = "myproject"; const URL = `http://localhost:8090/api/archive/${INSTANCE}/events`; @@ -113,10 +115,13 @@ async function postEvent(event, delaySeconds) { } } -async function main() { +export async function postAllEvents() { for (let i = 0; i < events.length; i++) { await postEvent(events[i], i * 5); } } -main(); +// If you still want to run it standalone +if (import.meta.url === `file://${process.argv[1]}`) { + postAllEvents(); +} diff --git a/package.json b/package.json index f35c60ce..6ddf2f6f 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "test:e2e:quickstart:local": "npm test --workspace tests/e2e/opensource -- --config=../playwright-quickstart.config.js --project=local-chrome tests/e2e/yamcs/", "test:e2e:watch": "npm test --workspace tests/e2e/opensource -- --ui --config=../playwright-quickstart.config.js", "wait-for-yamcs": "wait-on http-get://localhost:8090/ -v", - "make-example-events": "node ./example/make-example-events.js" + "make-example-events": "node ./example/make-example-events.mjs" }, "keywords": [ "openmct", diff --git a/tests/e2e/yamcs/timeline.e2e.spec.mjs b/tests/e2e/yamcs/timeline.e2e.spec.mjs new file mode 100644 index 00000000..9197020d --- /dev/null +++ b/tests/e2e/yamcs/timeline.e2e.spec.mjs @@ -0,0 +1,61 @@ +/***************************************************************************** + * Open MCT, Copyright (c) 2014-2022, 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 { pluginFixtures, appActions } from 'openmct-e2e'; +import { postAllEvents } from '../../../example/make-example-events.mjs'; // Updated path and extension +const { test, expect } = pluginFixtures; +const { createDomainObjectWithDefaults, setStartOffset, setFixedTimeMode } = appActions; + +test.describe("Timeline Events in @yamcs", () => { + test.only('Can create a timeline with YAMCS events', async ({ page }) => { + // Go to baseURL + await page.goto("./", { waitUntil: "networkidle" }); + await page.getByLabel('Expand myproject folder').click(); + const eventsTreeItem = page.getByRole('treeitem', { name: /Events/ }); + const eventTimelineView = await createDomainObjectWithDefaults(page, { type: 'Time Strip' }); + + let objectPane = page.locator('.c-object-view'); + await eventsTreeItem.dragTo(objectPane); + await postAllEvents(); + + await setStartOffset(page, { startMins: '05' }); + await setFixedTimeMode(page); + + await page + .getByLabel(eventTimelineView.name) + .getByLabel(/Pressure threshold exceeded/) + .first() + .click(); + await page.getByRole('tab', { name: 'Event' }).click(); + + // ensure the event inspector has the the same event + await expect(page.getByText(/Pressure threshold exceeded/)).toBeVisible(); + + // await page.getByLabel('Expand Events yamcs.events').click(); + // await page.getByLabel('Expand PressureModule yamcs.').click(); + // const pressureModuleInfoTreeItem = page.getByRole('treeitem', { name: /PressureModule: info/ }); + // objectPane = page.locator('.c-object-view'); + // await pressureModuleInfoTreeItem.dragTo(objectPane); + + // await page.pause(); + }); +});