refactor: use the npm workspace packages/* pattern and rename e2e subpackage

- renames e2e subpackage from openmct-e2e to @openmct/e2e (uses openmct project scope)
This commit is contained in:
Jesse Mazzella 2024-10-25 17:16:39 -07:00
parent 2010f2e377
commit e391e6d2e0
173 changed files with 369 additions and 315 deletions

View File

@ -124,7 +124,7 @@ Our e2e (end-to-end), Visual, and Performance tests leverage the Playwright fram
npm run test:perf
```
All tests are located within the `e2e/tests/` directory and are identified by the `*.e2e.spec.js` filename pattern. For more information about the e2e test suite, refer to the [README](./e2e/README.md).
All tests are located within the `packages/e2e/tests/` directory and are identified by the `*.e2e.spec.js` filename pattern. For more information about the e2e test suite, refer to the [README](./packages/e2e/README.md).
### Security Tests

File diff suppressed because one or more lines are too long

568
package-lock.json generated
View File

@ -9,7 +9,7 @@
"version": "4.1.0-next",
"license": "Apache-2.0",
"workspaces": [
"e2e"
"packages/*"
],
"devDependencies": {
"@babel/eslint-parser": "7.23.3",
@ -99,6 +99,7 @@
"e2e": {
"name": "openmct-e2e",
"version": "4.1.0-next",
"extraneous": true,
"license": "Apache-2.0",
"devDependencies": {
"@axe-core/playwright": "4.8.5",
@ -107,242 +108,6 @@
"@playwright/test": "1.48.1"
}
},
"e2e/node_modules/@percy/cli": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli/-/cli-1.27.4.tgz",
"integrity": "sha512-eIM44ejCMFc/S2W7X0htV+lvvmf63x5CaBpsSoQ9LRc/W02zHVAwQYdFFUowZEK6G1EwJEPIUnDxuuEx9PLG5A==",
"dev": true,
"dependencies": {
"@percy/cli-app": "1.27.4",
"@percy/cli-build": "1.27.4",
"@percy/cli-command": "1.27.4",
"@percy/cli-config": "1.27.4",
"@percy/cli-exec": "1.27.4",
"@percy/cli-snapshot": "1.27.4",
"@percy/cli-upload": "1.27.4",
"@percy/client": "1.27.4",
"@percy/logger": "1.27.4"
},
"bin": {
"percy": "bin/run.cjs"
},
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/cli-app": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-app/-/cli-app-1.27.4.tgz",
"integrity": "sha512-av/s6K2QmQgq4SCQQ+3lmteNHeQtIpMeBjMfSgxs9zeBoPVOMx5hXrdsi6l7ChvOLXyYfzl/TbEuwrSDXiA8mw==",
"dev": true,
"dependencies": {
"@percy/cli-command": "1.27.4",
"@percy/cli-exec": "1.27.4"
},
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/cli-build": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-build/-/cli-build-1.27.4.tgz",
"integrity": "sha512-tzCAcV0sAw608Gr/Q6NtPvVkA8dnIehMzvEXNIN3WP9DkprOgu7MYuexN0fZXf4vSroDWYXT87pHYP8YrrnDag==",
"dev": true,
"dependencies": {
"@percy/cli-command": "1.27.4"
},
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/cli-command": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-command/-/cli-command-1.27.4.tgz",
"integrity": "sha512-YDKeeOr1MvksDOnc2ZKQ/XuERGrWwzuT/vWZ9it8L+0SyPj28UbklDu0e9zBgPsSDfxJlIvsWXRuHNGHsweKXg==",
"dev": true,
"dependencies": {
"@percy/config": "1.27.4",
"@percy/core": "1.27.4",
"@percy/logger": "1.27.4"
},
"bin": {
"percy-cli-readme": "bin/readme.js"
},
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/cli-config": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-config/-/cli-config-1.27.4.tgz",
"integrity": "sha512-wFtQwPw4LEqpcZ6ac6WtejyGrvrrzzLdyvXNvsCPQLE47qXnXVXJ+E99k9KGcjavtUuPxrbWtX996Fz9Fb5hoQ==",
"dev": true,
"dependencies": {
"@percy/cli-command": "1.27.4"
},
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/cli-exec": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-exec/-/cli-exec-1.27.4.tgz",
"integrity": "sha512-aSDLvzXXdwJso+p5iI4iTOa7AYzgFdRoqY9ij/R5aAL9juNkvG5QatB1bkUNbJabKFe16t7iigt4eJnlS0R13A==",
"dev": true,
"dependencies": {
"@percy/cli-command": "1.27.4",
"cross-spawn": "^7.0.3",
"which": "^2.0.2"
},
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/cli-snapshot": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-snapshot/-/cli-snapshot-1.27.4.tgz",
"integrity": "sha512-dDT2UpeP6X5NcMdj3AKLhHGmnobwzlXsHa52C+ne3kg3HSZgaXH9OsNY866Xe7onvcsZxvnRKDYHmWW6kC3cKQ==",
"dev": true,
"dependencies": {
"@percy/cli-command": "1.27.4",
"yaml": "^2.0.0"
},
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/cli-upload": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-upload/-/cli-upload-1.27.4.tgz",
"integrity": "sha512-+4mcEOUydFubyMWVzQjPV79sL1Jar95SR7Yr7Vp4FBoE0iq0CbaHoJtyOWDfwvHYYp4rRjVMxpY0ha3jnmF0mA==",
"dev": true,
"dependencies": {
"@percy/cli-command": "1.27.4",
"fast-glob": "^3.2.11",
"image-size": "^1.0.0"
},
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/client": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/client/-/client-1.27.4.tgz",
"integrity": "sha512-1F8ulTJhfk4/Lgj1Cn0blaRd8vTRJDxahAGseTbfrnZ2PHsftPZ65/5nCHPtpdD/2CE8N5COBQscGTMQQO+hBA==",
"dev": true,
"dependencies": {
"@percy/env": "1.27.4",
"@percy/logger": "1.27.4"
},
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/config": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/config/-/config-1.27.4.tgz",
"integrity": "sha512-mlgiOdzdSfUSx9FskVIjmbT/iHbTif0Ow5evZQJTT1W0xgHOBWDCZyhINdsqulSBw+K1PNhHsu1J0h2ijxF4uA==",
"dev": true,
"dependencies": {
"@percy/logger": "1.27.4",
"ajv": "^8.6.2",
"cosmiconfig": "^8.0.0",
"yaml": "^2.0.0"
},
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/core": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/core/-/core-1.27.4.tgz",
"integrity": "sha512-WdsA4zlPgXl9xj+a5WW2wA20iU6VTDmRq5sgsYNSuPzZfQB2I5Cecgvb55p86dhlUTbPJrC76daQKzDTGe0hfA==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
"@percy/client": "1.27.4",
"@percy/config": "1.27.4",
"@percy/dom": "1.27.4",
"@percy/logger": "1.27.4",
"@percy/webdriver-utils": "1.27.4",
"content-disposition": "^0.5.4",
"cross-spawn": "^7.0.3",
"extract-zip": "^2.0.1",
"fast-glob": "^3.2.11",
"micromatch": "^4.0.4",
"mime-types": "^2.1.34",
"path-to-regexp": "^6.2.0",
"rimraf": "^3.0.2",
"ws": "^8.0.0"
},
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/dom": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/dom/-/dom-1.27.4.tgz",
"integrity": "sha512-pwPDx3e9y7uRobVlEya8xu3BB3GeXbC74kQ6pPM/wFYDwi/Dg8DJywCsj5Nko/7QuhXP02rYgatkbREOIRxDnA==",
"dev": true
},
"e2e/node_modules/@percy/env": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/env/-/env-1.27.4.tgz",
"integrity": "sha512-Xl2VUpljOrlCvAp/+KfmN9NUcTGpRdXPa1U9zSIyBnV/oAksp3/CK5EPpKZX/f8xUUkTp78UPaG99sEMA8VvXQ==",
"dev": true,
"dependencies": {
"@percy/logger": "1.27.4"
},
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/logger": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.27.4.tgz",
"integrity": "sha512-AwXqYaDkHaq1TPkP+ByB8rjvH9ddvkAH9tFd2kmq8AeFFXZ0amAPSbm6u090OUtdHWjRmKQK9JjSouBxEh0aRw==",
"dev": true,
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/playwright": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@percy/playwright/-/playwright-1.0.4.tgz",
"integrity": "sha512-prXvaEyvM6M7vGx0YujdMmFf+rZqkQpDEK32ZOwXbMzKYhGXjyiYESa4Axhc+Pz/c0THhXZWH4/70IW0RcyCQA==",
"dev": true,
"dependencies": {
"@percy/sdk-utils": "^1.0.0"
},
"engines": {
"node": ">=14"
},
"peerDependencies": {
"playwright-core": ">=1"
}
},
"e2e/node_modules/@percy/sdk-utils": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/sdk-utils/-/sdk-utils-1.27.4.tgz",
"integrity": "sha512-vhPcdtmJlvTYJ5VOqiVzo02ujdtBFNw1/Bj+2ybiZgn7PkCDPFcITfXoWWPea319EIibGC4ZHjWHctRBgtW/tQ==",
"dev": true,
"engines": {
"node": ">=14"
}
},
"e2e/node_modules/@percy/webdriver-utils": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/webdriver-utils/-/webdriver-utils-1.27.4.tgz",
"integrity": "sha512-pZOOYns8Fikh2qlbxO16DxFEnCrnFIoLpE7iz4M9jXxOfk16VZF1PWknMChSr5NqG2I9k2OMjizUE2j8zvtl2Q==",
"dev": true,
"dependencies": {
"@percy/config": "1.27.4",
"@percy/sdk-utils": "1.27.4"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
@ -1525,6 +1290,273 @@
"node": ">= 8"
}
},
"node_modules/@openmct/e2e": {
"resolved": "packages/e2e",
"link": true
},
"node_modules/@percy/cli": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli/-/cli-1.27.4.tgz",
"integrity": "sha512-eIM44ejCMFc/S2W7X0htV+lvvmf63x5CaBpsSoQ9LRc/W02zHVAwQYdFFUowZEK6G1EwJEPIUnDxuuEx9PLG5A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@percy/cli-app": "1.27.4",
"@percy/cli-build": "1.27.4",
"@percy/cli-command": "1.27.4",
"@percy/cli-config": "1.27.4",
"@percy/cli-exec": "1.27.4",
"@percy/cli-snapshot": "1.27.4",
"@percy/cli-upload": "1.27.4",
"@percy/client": "1.27.4",
"@percy/logger": "1.27.4"
},
"bin": {
"percy": "bin/run.cjs"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/cli-app": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-app/-/cli-app-1.27.4.tgz",
"integrity": "sha512-av/s6K2QmQgq4SCQQ+3lmteNHeQtIpMeBjMfSgxs9zeBoPVOMx5hXrdsi6l7ChvOLXyYfzl/TbEuwrSDXiA8mw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@percy/cli-command": "1.27.4",
"@percy/cli-exec": "1.27.4"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/cli-build": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-build/-/cli-build-1.27.4.tgz",
"integrity": "sha512-tzCAcV0sAw608Gr/Q6NtPvVkA8dnIehMzvEXNIN3WP9DkprOgu7MYuexN0fZXf4vSroDWYXT87pHYP8YrrnDag==",
"dev": true,
"license": "MIT",
"dependencies": {
"@percy/cli-command": "1.27.4"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/cli-command": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-command/-/cli-command-1.27.4.tgz",
"integrity": "sha512-YDKeeOr1MvksDOnc2ZKQ/XuERGrWwzuT/vWZ9it8L+0SyPj28UbklDu0e9zBgPsSDfxJlIvsWXRuHNGHsweKXg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@percy/config": "1.27.4",
"@percy/core": "1.27.4",
"@percy/logger": "1.27.4"
},
"bin": {
"percy-cli-readme": "bin/readme.js"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/cli-config": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-config/-/cli-config-1.27.4.tgz",
"integrity": "sha512-wFtQwPw4LEqpcZ6ac6WtejyGrvrrzzLdyvXNvsCPQLE47qXnXVXJ+E99k9KGcjavtUuPxrbWtX996Fz9Fb5hoQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@percy/cli-command": "1.27.4"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/cli-exec": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-exec/-/cli-exec-1.27.4.tgz",
"integrity": "sha512-aSDLvzXXdwJso+p5iI4iTOa7AYzgFdRoqY9ij/R5aAL9juNkvG5QatB1bkUNbJabKFe16t7iigt4eJnlS0R13A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@percy/cli-command": "1.27.4",
"cross-spawn": "^7.0.3",
"which": "^2.0.2"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/cli-snapshot": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-snapshot/-/cli-snapshot-1.27.4.tgz",
"integrity": "sha512-dDT2UpeP6X5NcMdj3AKLhHGmnobwzlXsHa52C+ne3kg3HSZgaXH9OsNY866Xe7onvcsZxvnRKDYHmWW6kC3cKQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@percy/cli-command": "1.27.4",
"yaml": "^2.0.0"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/cli-upload": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/cli-upload/-/cli-upload-1.27.4.tgz",
"integrity": "sha512-+4mcEOUydFubyMWVzQjPV79sL1Jar95SR7Yr7Vp4FBoE0iq0CbaHoJtyOWDfwvHYYp4rRjVMxpY0ha3jnmF0mA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@percy/cli-command": "1.27.4",
"fast-glob": "^3.2.11",
"image-size": "^1.0.0"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/client": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/client/-/client-1.27.4.tgz",
"integrity": "sha512-1F8ulTJhfk4/Lgj1Cn0blaRd8vTRJDxahAGseTbfrnZ2PHsftPZ65/5nCHPtpdD/2CE8N5COBQscGTMQQO+hBA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@percy/env": "1.27.4",
"@percy/logger": "1.27.4"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/config": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/config/-/config-1.27.4.tgz",
"integrity": "sha512-mlgiOdzdSfUSx9FskVIjmbT/iHbTif0Ow5evZQJTT1W0xgHOBWDCZyhINdsqulSBw+K1PNhHsu1J0h2ijxF4uA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@percy/logger": "1.27.4",
"ajv": "^8.6.2",
"cosmiconfig": "^8.0.0",
"yaml": "^2.0.0"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/core": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/core/-/core-1.27.4.tgz",
"integrity": "sha512-WdsA4zlPgXl9xj+a5WW2wA20iU6VTDmRq5sgsYNSuPzZfQB2I5Cecgvb55p86dhlUTbPJrC76daQKzDTGe0hfA==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"@percy/client": "1.27.4",
"@percy/config": "1.27.4",
"@percy/dom": "1.27.4",
"@percy/logger": "1.27.4",
"@percy/webdriver-utils": "1.27.4",
"content-disposition": "^0.5.4",
"cross-spawn": "^7.0.3",
"extract-zip": "^2.0.1",
"fast-glob": "^3.2.11",
"micromatch": "^4.0.4",
"mime-types": "^2.1.34",
"path-to-regexp": "^6.2.0",
"rimraf": "^3.0.2",
"ws": "^8.0.0"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/dom": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/dom/-/dom-1.27.4.tgz",
"integrity": "sha512-pwPDx3e9y7uRobVlEya8xu3BB3GeXbC74kQ6pPM/wFYDwi/Dg8DJywCsj5Nko/7QuhXP02rYgatkbREOIRxDnA==",
"dev": true,
"license": "MIT"
},
"node_modules/@percy/env": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/env/-/env-1.27.4.tgz",
"integrity": "sha512-Xl2VUpljOrlCvAp/+KfmN9NUcTGpRdXPa1U9zSIyBnV/oAksp3/CK5EPpKZX/f8xUUkTp78UPaG99sEMA8VvXQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@percy/logger": "1.27.4"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/logger": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/logger/-/logger-1.27.4.tgz",
"integrity": "sha512-AwXqYaDkHaq1TPkP+ByB8rjvH9ddvkAH9tFd2kmq8AeFFXZ0amAPSbm6u090OUtdHWjRmKQK9JjSouBxEh0aRw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/playwright": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@percy/playwright/-/playwright-1.0.4.tgz",
"integrity": "sha512-prXvaEyvM6M7vGx0YujdMmFf+rZqkQpDEK32ZOwXbMzKYhGXjyiYESa4Axhc+Pz/c0THhXZWH4/70IW0RcyCQA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@percy/sdk-utils": "^1.0.0"
},
"engines": {
"node": ">=14"
},
"peerDependencies": {
"playwright-core": ">=1"
}
},
"node_modules/@percy/sdk-utils": {
"version": "1.30.1",
"resolved": "https://registry.npmjs.org/@percy/sdk-utils/-/sdk-utils-1.30.1.tgz",
"integrity": "sha512-xdeaHEdQvytFEbNBYCFdu1ToD6T/BT6YtZYwfNKAYXwQqVbm4wr/3LVH+GUcxYZsBCxmeSyCrF4buspUhxTNJQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/webdriver-utils": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/webdriver-utils/-/webdriver-utils-1.27.4.tgz",
"integrity": "sha512-pZOOYns8Fikh2qlbxO16DxFEnCrnFIoLpE7iz4M9jXxOfk16VZF1PWknMChSr5NqG2I9k2OMjizUE2j8zvtl2Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@percy/config": "1.27.4",
"@percy/sdk-utils": "1.27.4"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@percy/webdriver-utils/node_modules/@percy/sdk-utils": {
"version": "1.27.4",
"resolved": "https://registry.npmjs.org/@percy/sdk-utils/-/sdk-utils-1.27.4.tgz",
"integrity": "sha512-vhPcdtmJlvTYJ5VOqiVzo02ujdtBFNw1/Bj+2ybiZgn7PkCDPFcITfXoWWPea319EIibGC4ZHjWHctRBgtW/tQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=14"
}
},
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@ -1875,6 +1907,7 @@
"resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
"integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"@types/node": "*"
@ -2685,6 +2718,7 @@
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": "*"
}
@ -3313,6 +3347,7 @@
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
"integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
"dev": true,
"license": "MIT",
"dependencies": {
"import-fresh": "^3.3.0",
"js-yaml": "^4.1.0",
@ -3338,13 +3373,15 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
"dev": true,
"license": "Python-2.0"
},
"node_modules/cosmiconfig/node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
},
@ -4349,6 +4386,7 @@
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"once": "^1.4.0"
}
@ -5494,6 +5532,7 @@
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
"integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
"debug": "^4.1.1",
"get-stream": "^5.1.0",
@ -5605,6 +5644,7 @@
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
"integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
"dev": true,
"license": "MIT",
"dependencies": {
"pend": "~1.2.0"
}
@ -5961,6 +6001,7 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"dev": true,
"license": "MIT",
"dependencies": {
"pump": "^3.0.0"
},
@ -6451,6 +6492,7 @@
"resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz",
"integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"queue": "6.0.2"
},
@ -7883,10 +7925,11 @@
}
},
"node_modules/minipass": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
"license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
@ -8463,10 +8506,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/openmct-e2e": {
"resolved": "e2e",
"link": true
},
"node_modules/optionator": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
@ -8678,10 +8717,11 @@
}
},
"node_modules/path-to-regexp": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
"integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==",
"dev": true
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
"integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
"dev": true,
"license": "MIT"
},
"node_modules/path-type": {
"version": "4.0.0",
@ -8696,7 +8736,8 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
"integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
"dev": true
"dev": true,
"license": "MIT"
},
"node_modules/picocolors": {
"version": "1.0.0",
@ -9280,10 +9321,11 @@
"dev": true
},
"node_modules/pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
"integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
"dev": true,
"license": "MIT",
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@ -9327,6 +9369,7 @@
"resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
"integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
"dev": true,
"license": "MIT",
"dependencies": {
"inherits": "~2.0.3"
}
@ -12024,10 +12067,11 @@
"dev": true
},
"node_modules/yaml": {
"version": "2.4.5",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz",
"integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==",
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz",
"integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==",
"dev": true,
"license": "ISC",
"bin": {
"yaml": "bin.mjs"
},
@ -12067,6 +12111,7 @@
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
"integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
"dev": true,
"license": "MIT",
"dependencies": {
"buffer-crc32": "~0.2.3",
"fd-slicer": "~1.1.0"
@ -12083,6 +12128,17 @@
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"packages/e2e": {
"name": "@openmct/e2e",
"version": "4.1.0-next",
"license": "Apache-2.0",
"devDependencies": {
"@axe-core/playwright": "4.8.5",
"@percy/cli": "1.27.4",
"@percy/playwright": "1.0.4",
"@playwright/test": "1.48.1"
}
}
}
}

View File

@ -12,7 +12,7 @@
}
},
"workspaces": [
"e2e"
"packages/*"
],
"devDependencies": {
"@babel/eslint-parser": "7.23.3",
@ -113,21 +113,21 @@
"test": "karma start karma.conf.cjs",
"test:debug": "KARMA_DEBUG=true karma start karma.conf.cjs",
"test:e2e": "npm test --workspace e2e",
"test:e2e:a11y": "npm test --workspace e2e -- --config=playwright-visual-a11y.config.js --project=chrome --grep @a11y",
"test:e2e:mobile": "npm test --workspace e2e -- --config=playwright-mobile.config.js",
"test:e2e:couchdb": "npm test --workspace e2e -- --config=playwright-ci.config.js --project=chrome --grep @couchdb --workers=1",
"test:e2e:ci": "npm test --workspace e2e -- --config=playwright-ci.config.js --project=chrome --grep-invert \"@couchdb|@generatedata\"",
"test:e2e:local": "npm test --workspace e2e -- --config=playwright-local.config.js --project=chrome",
"test:e2e:generatedata": "npm test --workspace e2e -- --config=playwright-ci.config.js --project=chrome --grep @generatedata",
"test:e2e:checksnapshots": "npm test --workspace e2e -- --config=playwright-ci.config.js --project=chrome --grep @snapshot --retries=0",
"test:e2e:updatesnapshots": "npm test --workspace e2e -- --config=playwright-ci.config.js --project=chrome --grep @snapshot --update-snapshots",
"test:e2e:visual:ci": "npm run test:visual --workspace e2e -- --config .percy.ci.yml --partial -- npx playwright test --config=playwright-visual-a11y.config.js --project=chrome",
"test:e2e:visual:full": "npm run test:visual --workspace e2e -- --config .percy.nightly.yml -- npx playwright test --config=playwright-visual-a11y.config.js",
"test:e2e:full": "npm test --workspace e2e -- --config=playwright-ci.config.js --grep-invert @couchdb",
"test:e2e:watch": "npm test --workspace e2e -- --ui --config=playwright-watch.config.js",
"test:perf:contract": "npm test --workspace e2e -- --config=playwright-performance-dev.config.js",
"test:perf:localhost": "npm test --workspace e2e -- --config=playwright-performance-prod.config.js --project=chrome",
"test:perf:memory": "npm test --workspace e2e -- --config=playwright-performance-prod.config.js --project=chrome-memory",
"test:e2e:a11y": "npm test --workspace packages/e2e -- --config=playwright-visual-a11y.config.js --project=chrome --grep @a11y",
"test:e2e:mobile": "npm test --workspace packages/e2e -- --config=playwright-mobile.config.js",
"test:e2e:couchdb": "npm test --workspace packages/e2e -- --config=playwright-ci.config.js --project=chrome --grep @couchdb --workers=1",
"test:e2e:ci": "npm test --workspace packages/e2e -- --config=playwright-ci.config.js --project=chrome --grep-invert \"@couchdb|@generatedata\"",
"test:e2e:local": "npm test --workspace packages/e2e -- --config=playwright-local.config.js --project=chrome",
"test:e2e:generatedata": "npm test --workspace packages/e2e -- --config=playwright-ci.config.js --project=chrome --grep @generatedata",
"test:e2e:checksnapshots": "npm test --workspace packages/e2e -- --config=playwright-ci.config.js --project=chrome --grep @snapshot --retries=0",
"test:e2e:updatesnapshots": "npm test --workspace packages/e2e -- --config=playwright-ci.config.js --project=chrome --grep @snapshot --update-snapshots",
"test:e2e:visual:ci": "npm run test:visual --workspace packages/e2e -- --config .percy.ci.yml --partial -- npx playwright test --config=playwright-visual-a11y.config.js --project=chrome",
"test:e2e:visual:full": "npm run test:visual --workspace packages/e2e -- --config .percy.nightly.yml -- npx playwright test --config=playwright-visual-a11y.config.js",
"test:e2e:full": "npm test --workspace packages/e2e -- --config=playwright-ci.config.js --grep-invert @couchdb",
"test:e2e:watch": "npm test --workspace packages/e2e -- --ui --config=playwright-watch.config.js",
"test:perf:contract": "npm test --workspace packages/e2e -- --config=playwright-performance-dev.config.js",
"test:perf:localhost": "npm test --workspace packages/e2e -- --config=playwright-performance-prod.config.js --project=chrome",
"test:perf:memory": "npm test --workspace packages/e2e -- --config=playwright-performance-prod.config.js --project=chrome-memory",
"update-about-dialog-copyright": "perl -pi -e 's/20\\d\\d\\-202\\d/2014\\-2024/gm' ./src/ui/layout/AboutDialog.vue",
"update-copyright-date": "npm run update-about-dialog-copyright && grep -lr --null --include=*.{js,scss,vue,ts,sh,html,md,frag} 'Copyright (c) 20' . | xargs -r0 perl -pi -e 's/Copyright\\s\\(c\\)\\s20\\d\\d\\-20\\d\\d/Copyright \\(c\\)\\ 2014\\-2024/gm'",
"cov:e2e:report": "nyc report --reporter=lcovonly --report-dir=./coverage/e2e",
@ -157,4 +157,4 @@
"keywords": [
"nasa"
]
}
}

View File

@ -34,7 +34,7 @@
* @typedef {Object} CreateObjectOptions
* @property {string} type the type of domain object to create (e.g.: "Sine Wave Generator").
* @property {string} [name] the desired name of the created domain object.
* @property {string | import('../src/api/objects/ObjectAPI').Identifier} [parent] the Identifier or uuid of the parent object.
* @property {string | import('../../src/api/objects/ObjectAPI').Identifier} [parent] the Identifier or uuid of the parent object.
*/
/**
@ -50,7 +50,7 @@
* @typedef {Object} CreateNotificationOptions
* @property {string} message the message
* @property {'info' | 'alert' | 'error'} severity the severity
* @property {import('../src/api/notifications/NotificationAPI').NotificationOptions} [notificationOptions] additional options
* @property {import('../../src/api/notifications/NotificationAPI').NotificationOptions} [notificationOptions] additional options
*/
import { expect } from '@playwright/test';
@ -65,7 +65,7 @@ import { v4 as genUuid } from 'uuid';
* @param {Object} options - Options for creating the domain object.
* @param {string} options.type - The type of domain object to create (e.g., "Sine Wave Generator").
* @param {string} [options.name] - The desired name of the created domain object.
* @param {string | import('../src/api/objects/ObjectAPI').Identifier} [options.parent='mine'] - The Identifier or uuid of the parent object. Defaults to 'mine' folder
* @param {string | import('../../src/api/objects/ObjectAPI').Identifier} [options.parent='mine'] - The Identifier or uuid of the parent object. Defaults to 'mine' folder
* @returns {Promise<CreatedObjectInfo>} An object containing information about the newly created domain object.
*/
async function createDomainObjectWithDefaults(page, { type, name, parent = 'mine' }) {
@ -142,7 +142,7 @@ async function createNotification(page, createNotificationOptions) {
* @param {import('@playwright/test').Page} page
* @param {string} name
* @param {Object} json
* @param {string | import('../src/api/objects/ObjectAPI').Identifier} [parent] the uuid or identifier of the parent object. Defaults to 'mine'
* @param {string | import('../../src/api/objects/ObjectAPI').Identifier} [parent] the uuid or identifier of the parent object. Defaults to 'mine'
* @returns {Promise<CreatedObjectInfo>} An object containing information about the newly created domain object.
*/
async function createPlanFromJSON(page, { name, json, parent = 'mine' }) {
@ -188,7 +188,7 @@ async function createPlanFromJSON(page, { name, json, parent = 'mine' }) {
* Create a standardized Telemetry Object (Sine Wave Generator) for use in visual tests
* and tests against plotting telemetry (e.g. logPlot tests).
* @param {import('@playwright/test').Page} page
* @param {string | import('../src/api/objects/ObjectAPI').Identifier} [parent] the uuid or identifier of the parent object. Defaults to 'mine'
* @param {string | import('../../src/api/objects/ObjectAPI').Identifier} [parent] the uuid or identifier of the parent object. Defaults to 'mine'
* @returns {Promise<CreatedObjectInfo>} An object containing information about the telemetry object.
*/
async function createExampleTelemetryObject(page, parent = 'mine') {
@ -231,7 +231,7 @@ async function createExampleTelemetryObject(page, parent = 'mine') {
* Create a Stable State Telemetry Object (State Generator) for use in visual tests
* and tests against plotting telemetry (e.g. logPlot tests). This will change state every 2 seconds.
* @param {import('@playwright/test').Page} page
* @param {string | import('../src/api/objects/ObjectAPI').Identifier} [parent] the uuid or identifier of the parent object. Defaults to 'mine'
* @param {string | import('../../src/api/objects/ObjectAPI').Identifier} [parent] the uuid or identifier of the parent object. Defaults to 'mine'
* @returns {Promise<CreatedObjectInfo>} An object containing information about the telemetry object.
*/
async function createStableStateTelemetry(page, parent = 'mine') {
@ -340,7 +340,7 @@ async function getFocusedObjectUuid(page) {
* URLs returned will be of the form `'./browse/#/mine/<uuid0>/<uuid1>/...'`
*
* @param {import('@playwright/test').Page} page
* @param {string | import('../src/api/objects/ObjectAPI').Identifier} identifier the uuid or identifier of the object to get the url for
* @param {string | import('../../src/api/objects/ObjectAPI').Identifier} identifier the uuid or identifier of the object to get the url for
* @returns {Promise<string>} the url of the object
*/
async function getHashUrlToDomainObject(page, identifier) {
@ -369,7 +369,7 @@ async function getHashUrlToDomainObject(page, identifier) {
* Utilizes the OpenMCT API to detect if the UI is in Edit mode.
* @private
* @param {import('@playwright/test').Page} page
* @param {string | import('../src/api/objects/ObjectAPI').Identifier} identifier
* @param {string | import('../../src/api/objects/ObjectAPI').Identifier} identifier
* @return {Promise<boolean>} true if the Open MCT is in Edit Mode
*/
async function _isInEditMode(page, identifier) {

View File

@ -1,5 +1,5 @@
{
"name": "openmct-e2e",
"name": "@openmct/e2e",
"version": "4.1.0-next",
"description": "The Open MCT e2e framework",
"type": "module",
@ -14,10 +14,10 @@
"test:visual": "percy exec"
},
"devDependencies": {
"@axe-core/playwright": "4.8.5",
"@percy/cli": "1.27.4",
"@percy/playwright": "1.0.4",
"@playwright/test": "1.48.1",
"@axe-core/playwright": "4.8.5"
"@playwright/test": "1.48.1"
},
"author": {
"name": "National Aeronautics and Space Administration",

File diff suppressed because one or more lines are too long

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -22,7 +22,7 @@
/*
This test suite is dedicated to testing our use of the playwright framework as it
relates to how we've extended it (i.e. ./e2e/baseFixtures.js) and assumptions made in our dev environment
relates to how we've extended it (i.e. ./baseFixtures.js) and assumptions made in our dev environment
(`npm start` and ./e2e/webpack-dev-middleware.js)
*/

Some files were not shown because too many files have changed in this diff Show More