[build] Re-enable package lock (#7584)

* include package lock
* migrate to npm ci
* remove cache busting doc and replace with npm run clean

---------

Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
This commit is contained in:
John Hill 2024-03-14 09:27:31 -07:00 committed by GitHub
parent 10eb749d32
commit ceeb761d94
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 12324 additions and 58 deletions

View File

@ -1,4 +1,7 @@
version: 2.1 version: 2.1
orbs:
node: circleci/node@5.2.0
browser-tools: circleci/browser-tools@1.3.0
executors: executors:
pw-focal-development: pw-focal-development:
docker: docker:
@ -11,47 +14,17 @@ executors:
machine: machine:
image: ubuntu-2204:current image: ubuntu-2204:current
docker_layer_caching: true docker_layer_caching: true
parameters:
BUST_CACHE:
description: "Set this with the CircleCI UI Trigger Workflow button (boolean = true) to bust the cache!"
default: false
type: boolean
commands: commands:
build_and_install: build_and_install:
description: "All steps used to build and install. Will use cache if found" description: "All steps used to build and install."
parameters: parameters:
node-version: node-version:
type: string type: string
steps: steps:
- checkout - checkout
- restore_cache_cmd:
node-version: << parameters.node-version >>
- node/install: - node/install:
node-version: << parameters.node-version >> node-version: << parameters.node-version >>
- run: npm install --no-audit --progress=false - node/install-packages
restore_cache_cmd:
description: "Custom command for restoring cache with the ability to bust cache. When BUST_CACHE is set to true, jobs will not restore cache"
parameters:
node-version:
type: string
steps:
- when:
condition:
equal: [false, << pipeline.parameters.BUST_CACHE >>]
steps:
- restore_cache:
key: deps--{{ arch }}--{{ .Branch }}--<< parameters.node-version >>--{{ checksum "package.json" }}-{{ checksum ".circleci/config.yml" }}
save_cache_cmd:
description: "Custom command for saving cache."
parameters:
node-version:
type: string
steps:
- save_cache:
key: deps--{{ arch }}--{{ .Branch }}--<< parameters.node-version >>--{{ checksum "package.json" }}-{{ checksum ".circleci/config.yml" }}
paths:
- ~/.npm
- node_modules
generate_and_store_version_and_filesystem_artifacts: generate_and_store_version_and_filesystem_artifacts:
description: "Track important packages and files" description: "Track important packages and files"
steps: steps:
@ -71,9 +44,6 @@ commands:
steps: steps:
- run: npm run cov:e2e:report || true - run: npm run cov:e2e:report || true
- run: npm run cov:e2e:<<parameters.suite>>:publish - run: npm run cov:e2e:<<parameters.suite>>:publish
orbs:
node: circleci/node@5.1.0
browser-tools: circleci/browser-tools@1.3.0
jobs: jobs:
npm-audit: npm-audit:
parameters: parameters:
@ -111,8 +81,6 @@ jobs:
TESTFILES=$(circleci tests glob "src/**/*Spec.js") TESTFILES=$(circleci tests glob "src/**/*Spec.js")
echo "$TESTFILES" | circleci tests run --command="xargs npm run test" --verbose echo "$TESTFILES" | circleci tests run --command="xargs npm run test" --verbose
- run: npm run cov:unit:publish - run: npm run cov:unit:publish
- save_cache_cmd:
node-version: <<parameters.node-version>>
- store_test_results: - store_test_results:
path: dist/reports/tests/ path: dist/reports/tests/
- store_artifacts: - store_artifacts:

View File

@ -17,7 +17,6 @@ Closes <!--- Insert Issue Number(s) this PR addresses. Start by typing # will op
* [ ] Has this been smoke tested? * [ ] Has this been smoke tested?
* [ ] Have you associated this PR with a `type:` label? Note: this is not necessarily the same as the original issue. * [ ] Have you associated this PR with a `type:` label? Note: this is not necessarily the same as the original issue.
* [ ] Have you associated a milestone with this PR? Note: leave blank if unsure. * [ ] Have you associated a milestone with this PR? Note: leave blank if unsure.
* [ ] Is this a breaking change to be called out in the release notes?
* [ ] Testing instructions included in associated issue OR is this a dependency/testcase change? * [ ] Testing instructions included in associated issue OR is this a dependency/testcase change?
### Reviewer Checklist ### Reviewer Checklist

View File

@ -28,7 +28,7 @@ jobs:
restore-keys: | restore-keys: |
${{ runner.os }}-node- ${{ runner.os }}-node-
- run: npm install --cache ~/.npm --no-audit --progress=false - run: npm ci --no-audit --progress=false
- name: Login to DockerHub - name: Login to DockerHub
uses: docker/login-action@v3 uses: docker/login-action@v3

View File

@ -31,7 +31,7 @@ jobs:
${{ runner.os }}-node- ${{ runner.os }}-node-
- run: npx playwright@1.39.0 install - run: npx playwright@1.39.0 install
- run: npm install --cache ~/.npm --no-audit --progress=false - run: npm ci --no-audit --progress=false
- name: Run E2E Tests (Repeated 10 Times) - name: Run E2E Tests (Repeated 10 Times)
run: npm run test:e2e:stable -- --retries=0 --repeat-each=10 --max-failures=50 run: npm run test:e2e:stable -- --retries=0 --repeat-each=10 --max-failures=50

View File

@ -29,7 +29,7 @@ jobs:
${{ runner.os }}-node- ${{ runner.os }}-node-
- run: npx playwright@1.39.0 install - run: npx playwright@1.39.0 install
- run: npm install --cache ~/.npm --no-audit --progress=false - run: npm ci --no-audit --progress=false
- run: npm run test:perf:localhost - run: npm run test:perf:localhost
- run: npm run test:perf:contract - run: npm run test:perf:contract
- run: npm run test:perf:memory - run: npm run test:perf:memory

View File

@ -35,7 +35,7 @@ jobs:
- run: npx playwright@1.39.0 install - run: npx playwright@1.39.0 install
- run: npx playwright install chrome-beta - run: npx playwright install chrome-beta
- run: npm install --cache ~/.npm --no-audit --progress=false - run: npm ci --no-audit --progress=false
- run: npm run test:e2e:full -- --max-failures=40 - run: npm run test:e2e:full -- --max-failures=40
- run: npm run cov:e2e:report || true - run: npm run cov:e2e:report || true
- shell: bash - shell: bash

View File

@ -15,7 +15,7 @@ jobs:
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:
node-version: lts/hydrogen node-version: lts/hydrogen
- run: npm install - run: npm ci
- run: | - run: |
echo "//registry.npmjs.org/:_authToken=$NODE_AUTH_TOKEN" >> ~/.npmrc echo "//registry.npmjs.org/:_authToken=$NODE_AUTH_TOKEN" >> ~/.npmrc
npm whoami npm whoami
@ -31,7 +31,7 @@ jobs:
with: with:
node-version: lts/hydrogen node-version: lts/hydrogen
registry-url: https://registry.npmjs.org/ registry-url: https://registry.npmjs.org/
- run: npm install - run: npm ci
- run: npm publish --access=public --tag unstable - run: npm publish --access=public --tag unstable
env: env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

View File

@ -45,7 +45,7 @@ jobs:
restore-keys: | restore-keys: |
${{ runner.os }}-${{ matrix.node_version }}- ${{ runner.os }}-${{ matrix.node_version }}-
- run: npm install --cache ~/.npm --no-audit --progress=false - run: npm ci --no-audit --progress=false
- run: npm test - run: npm test

3
.gitignore vendored
View File

@ -47,6 +47,3 @@ index.html.bak
.nyc_output .nyc_output
coverage coverage
codecov codecov
# :(
package-lock.json

3
.npmrc
View File

@ -2,6 +2,3 @@ loglevel=warn
#Prevent folks from ignoring an important error when building from source #Prevent folks from ignoring an important error when building from source
engine-strict=true engine-strict=true
# Dont include lockfile
package-lock=false

View File

@ -91,12 +91,14 @@ There are a few reasons that your GitHub PR could be failing beyond simple faile
### Local=Pass and CI=Fail ### Local=Pass and CI=Fail
Although rare, it is possible that your test can pass locally but fail in CI. Although rare, it is possible that your test can pass locally but fail in CI.
#### Busting Cache ### Reset your workspace
In certain circumstances, the CircleCI cache can become stale. In order to bust the cache, we've implemented a runtime boolean parameter in Circle CI creatively name BUST_CACHE. To execute: It's possible that you're running with dependencies or a local environment which is out of sync with the branch you're working on. Make sure to execute the following:
1. Navigate to the branch in Circle CI believed to have stale cache.
1. Click on the 'Trigger Pipeline' button. ```sh
1. Add Parameter -> Parameter Type = boolean , Name = BUST_CACHE ,Value = true nvm use
1. Click 'Trigger Pipeline' npm run clean
npm install
```
#### Run tests in the same container as CI #### Run tests in the same container as CI

12284
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -91,7 +91,7 @@
"webpack-merge": "5.10.0" "webpack-merge": "5.10.0"
}, },
"scripts": { "scripts": {
"clean": "rm -rf ./dist ./node_modules ./package-lock.json ./coverage ./html-test-results ./test-results ./.nyc_output ", "clean": "rm -rf ./dist ./node_modules ./coverage ./html-test-results ./test-results ./.nyc_output ",
"start": "npx webpack serve --config ./.webpack/webpack.dev.js", "start": "npx webpack serve --config ./.webpack/webpack.dev.js",
"start:prod": "npx webpack serve --config ./.webpack/webpack.prod.js", "start:prod": "npx webpack serve --config ./.webpack/webpack.prod.js",
"start:coverage": "npx webpack serve --config ./.webpack/webpack.coverage.js", "start:coverage": "npx webpack serve --config ./.webpack/webpack.coverage.js",

View File

@ -23,27 +23,46 @@
import EventEmitter from 'EventEmitter'; import EventEmitter from 'EventEmitter';
import _ from 'lodash'; import _ from 'lodash';
/**
* @typedef {Object} Selectable
* @property {HTMLElement} element The HTML element that is selectable
* @property {Object} context The context of the selectable, which may include a DomainObject
*/
/**
* @typedef {import('../../openmct').OpenMCT} OpenMCT
*/
/** /**
* Manages selection state for Open MCT * Manages selection state for Open MCT
* @private * @private
*/ */
export default class Selection extends EventEmitter { export default class Selection extends EventEmitter {
/**
* @param {OpenMCT} openmct The Open MCT instance
*/
constructor(openmct) { constructor(openmct) {
super(); super();
/** @type {OpenMCT} */
this.openmct = openmct; this.openmct = openmct;
/** @type {Selectable[]} */
this.selected = []; this.selected = [];
} }
/** /**
* Gets the selected object. * Gets the selected object.
* @returns {Selectable[]} The currently selected objects
* @public * @public
*/ */
get() { get() {
return this.selected; return this.selected;
} }
/** /**
* Selects the selectable object and emits the 'change' event. * Selects the selectable object and emits the 'change' event.
* *
* @param {Selectable|Selectable[]} selectable An object or array of objects with element and context properties
* @param {object} selectable an object with element and context properties * @param {object} selectable an object with element and context properties
* @param {Boolean} isMultiSelectEvent flag indication shift key is pressed or not * @param {Boolean} isMultiSelectEvent flag indication shift key is pressed or not
* @private * @private