Skip to content

Commit 62cc1d2

Browse files
authored
Merge branch 'master' into vipergc-997
2 parents 2fc58e6 + 9a855cf commit 62cc1d2

39 files changed

Lines changed: 3910 additions & 1237 deletions

.github/workflows/e2e-couchdb.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
- uses: actions/checkout@v4
1313
- uses: actions/setup-node@v4
1414
with:
15-
node-version: 'lts/hydrogen'
15+
node-version: '24.14.1'
1616

1717
- name: Cache NPM dependencies
1818
uses: actions/cache@v3
@@ -31,7 +31,7 @@ jobs:
3131
username: ${{ secrets.DOCKERHUB_USERNAME }}
3232
password: ${{ secrets.DOCKERHUB_TOKEN }}
3333

34-
- run: npx playwright@1.57.0 install
34+
- run: npm exec --workspace e2e -- playwright install --with-deps
3535

3636
- name: Start CouchDB Docker Container and Init with Setup Scripts
3737
run: |

.github/workflows/pr.yml

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99

1010
env:
1111
NODE_ENV: development
12-
NODE_VERSION: 22
12+
NODE_VERSION: 24.14.1
1313
PERCY_POSTINSTALL_BROWSER: "true"
1414
PERCY_LOGLEVEL: "debug"
1515
PERCY_PARALLEL_TOTAL: 2
@@ -23,14 +23,16 @@ jobs:
2323
- uses: actions/checkout@v4
2424
- id: generate_cache_key
2525
run: |
26-
lock_hash="$(sha256sum package-lock.json | awk '{print $1}')"
27-
echo "cache_key=node${NODE_VERSION}-deps-${lock_hash}" >> "$GITHUB_OUTPUT"
26+
lock_hash="$(sha256sum package-lock.json e2e/package-lock.json | sha256sum | awk '{print $1}')"
27+
echo "cache_key=node${NODE_VERSION}-deps-${lock_hash}-v2" >> "$GITHUB_OUTPUT"
2828
outputs:
2929
cache_key: ${{ steps.generate_cache_key.outputs.cache_key }}
3030
build_and_cache_dependencies_if_needed:
3131
needs: generate_cache_key
3232
runs-on: ubuntu-latest
33-
container: mcr.microsoft.com/playwright:v1.57.0-jammy
33+
container: mcr.microsoft.com/playwright:v1.57.0-jammy
34+
permissions:
35+
actions: write
3436
steps:
3537
- uses: actions/checkout@v4
3638
- uses: actions/setup-node@v4
@@ -45,7 +47,9 @@ jobs:
4547
e2e/node_modules
4648
dist
4749
key: ${{ needs.generate_cache_key.outputs.cache_key }}
48-
- run: npm ci
50+
- run: |
51+
npm ci
52+
npm run build
4953
if: steps.node_deps_restore_cache.outputs.cache-hit != 'true' || contains(github.event.pull_request.labels.*.name, 'build:clean')
5054
- name: Remove build:clean label (if present)
5155
if: contains(github.event.pull_request.labels.*.name, 'build:clean')
@@ -104,16 +108,10 @@ jobs:
104108
with:
105109
node-version: ${{ env.NODE_VERSION }}
106110
cache: npm
107-
- uses: actions/cache/restore@v4
108-
with:
109-
path: |
110-
node_modules
111-
e2e/node_modules
112-
dist
113-
key: ${{ needs.build_and_cache_dependencies_if_needed.outputs.cache_key }}
114111
- run: |
115112
mkdir -p dist/reports/tests/
116113
npm ci
114+
npm run build
117115
npm run test
118116
- uses: codecov/codecov-action@v4
119117
if: always()

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,4 @@ codecov
5151
# Don't commit MacOS screenshots
5252
*-darwin.png
5353
/.run/All Tests.run.xml
54+
.claude/

.npmrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@ loglevel=warn
22

33
#Prevent folks from ignoring an important error when building from source
44
engine-strict=true
5+
min-release-age=7
6+
allow-git=none
7+
ignore-scripts=true

.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
lts/*
1+
24.14.1

.webpack/webpack.common.mjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ const config = {
5353
compsMathWorker: './src/plugins/comps/CompsMathWorker.js',
5454
espressoTheme: './src/plugins/themes/espresso-theme.scss',
5555
snowTheme: './src/plugins/themes/snow-theme.scss',
56-
darkmatterTheme: './src/plugins/themes/darkmatter-theme.scss'
56+
darkmatterTheme: './src/plugins/themes/darkmatter-theme.scss',
57+
historicalTelemetryWorker: './src/plugins/condition/historicalTelemetryWorker.js',
5758
},
5859
output: {
5960
globalObject: 'this',

API.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ If you have `git`, and `node` installed, you can build Open MCT with the command
9393
git clone https://github.com/nasa/openmct.git
9494
cd openmct
9595
npm install
96+
npm run build
9697
```
9798

9899
These commands will fetch the Open MCT source from our GitHub repository, and

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ The project utilizes `nvm` to maintain consistent node and npm versions across a
7272

7373
If you encounter an issue with a particular browser, OS, or NodeJS API, please [file an issue](https://github.com/nasa/openmct/issues/new/choose).
7474

75+
> [!NOTE]
76+
> If you are building a project with Open MCT as a git dependency rather than an npm dependency, an extra step is now
77+
> necessary to build the source. Due to the threat posed by Supply Chain Attacks `ignore-scripts` is now enabled in
78+
> this repository. Developers building with Open MCT as a git dependency will now need to execute `npm run build`
79+
> manually. We always encourage developers to use Open MCT as a prebuilt npm repository, rather than building from github.
80+
7581
## Plugins
7682

7783
Open MCT can be extended via plugins that make calls to the Open MCT API. A plugin is a group

e2e/appActions.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,22 @@ async function createDomainObjectWithDefaults(
132132
};
133133
}
134134

135+
/**
136+
* Retrieves the properties of an OpenMCT domain object by its identifier.
137+
*
138+
* @param {import('@playwright/test').Page} page - The Playwright page object.
139+
* @param {string | identifier - The identifier or UUID of the domain object.
140+
* @returns {Promise<Object>} An object containing the properties of the domain object.
141+
*/
142+
async function getDomainObject(page, identifier) {
143+
const domainObject = await page.evaluate(async (objIdentifier) => {
144+
const object = await window.openmct.objects.get(objIdentifier);
145+
return object;
146+
}, identifier);
147+
148+
return domainObject;
149+
}
150+
135151
/**
136152
* Generate a notification with the given options.
137153
* @param {import('@playwright/test').Page} page
@@ -884,6 +900,7 @@ export {
884900
expandInspectorPane,
885901
expandTreePane,
886902
getCanvasPixels,
903+
getDomainObject,
887904
getNextSineValueFromSWG,
888905
linkParameterToObject,
889906
navigateToObjectWithFixedTimeBounds,

0 commit comments

Comments
 (0)