mirror of
https://github.com/quay/quay.git
synced 2026-01-26 06:21:37 +03:00
* chore: add Playwright e2e test infrastructure Add Playwright test framework with custom fixtures for authenticated contexts, API utilities for test data management, and repository delete test as initial migration from Cypress. Key additions: - global-setup.ts: Creates admin, testuser, readonly test users - fixtures.ts: Pre-authenticated page/request fixtures by role - utils/api.ts: CRUD utilities for repositories - MIGRATION.md: Guide for migrating Cypress tests to Playwright - repository-delete.spec.ts: First migrated test with full cleanup 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Brady Pratt <bpratt@redhat.com> * chore: update web/.dockerignore exclude tests from being included in the intermediate build - this should improve caching when only tests change Signed-off-by: Brady Pratt <bpratt@redhat.com> * chore: add pre-commit check to block new cypress tests Signed-off-by: Brady Pratt <bpratt@redhat.com> --------- Signed-off-by: Brady Pratt <bpratt@redhat.com> Co-authored-by: Claude <noreply@anthropic.com>
135 lines
4.7 KiB
JSON
135 lines
4.7 KiB
JSON
{
|
|
"name": "quay-ui",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"insights": {
|
|
"appname": "quay"
|
|
},
|
|
"homepage": ".",
|
|
"dependencies": {
|
|
"@patternfly/patternfly": "^5.0.4",
|
|
"@patternfly/react-charts": "^7.1.1",
|
|
"@patternfly/react-core": "^5.1.0",
|
|
"@patternfly/react-icons": "^5.1.0",
|
|
"@patternfly/react-table": "^5.1.0",
|
|
"@redhat-cloud-services/frontend-components": "^6.0.9",
|
|
"@redhat-cloud-services/frontend-components-config-utilities": "^4.4.1",
|
|
"@tanstack/react-query": "^4.13.5",
|
|
"@testing-library/jest-dom": "^5.16.4",
|
|
"@testing-library/react": "^12.1.4",
|
|
"@testing-library/user-event": "^14.4.3",
|
|
"@types/jest": "^29.5.3",
|
|
"@types/node": "^20.6.5",
|
|
"@types/react": "^18.2.0",
|
|
"axios": "^1.12.0",
|
|
"https-proxy-agent": "^5.0.1",
|
|
"js-sha1": "^0.6.0",
|
|
"mini-css-extract-plugin": "^2.7.6",
|
|
"null-loader": "^4.0.1",
|
|
"process": "^0.11.10",
|
|
"react": "^18.2.0",
|
|
"react-hook-form": "^7.60.0",
|
|
"react-markdown": "^10.1.0",
|
|
"react-router-dom": "^6.15.0",
|
|
"recoil": "^0.7.7",
|
|
"recoil-persist": "^4.2.0",
|
|
"rehype-raw": "^7.0.0",
|
|
"rehype-video": "^2.3.0",
|
|
"remark-gemoji": "^8.0.0",
|
|
"remark-gfm": "^4.0.1",
|
|
"ts-jest": "^29.1.1",
|
|
"typescript": "^5.8.3",
|
|
"use-react-router-breadcrumbs": "^4.0.1",
|
|
"web-vitals": "^3.4.0"
|
|
},
|
|
"scripts": {
|
|
"start": "webpack serve --color --progress --config webpack.dev.js",
|
|
"build": "webpack --config webpack.prod.js",
|
|
"start-plugin": "NODE_ENV=development webpack serve --color --progress --config webpack.plugin.js",
|
|
"build-plugin": "NODE_ENV=production webpack --config webpack.plugin.js",
|
|
"test": "react-scripts test",
|
|
"format": "prettier --config .prettierrc \"src/**/*.{ts,tsx}\" --write",
|
|
"test:integration": "cypress run",
|
|
"test:e2e": "playwright test",
|
|
"test:e2e:ui": "playwright test --ui",
|
|
"test:e2e:debug": "playwright test --debug",
|
|
"test:e2e:headed": "playwright test --headed",
|
|
"start:integration": "serve -s dist -l 9000",
|
|
"quay:dump": "${CLIENT:=docker} exec quay-db pg_dump -U quay -d quay --clean --if-exists > ./cypress/test/quay-db-data.txt && ${CLIENT:=docker} cp quay-quay:/datastorage/registry/. ./cypress/test/quay-storage-data",
|
|
"quay:seed": "npm run quay:seed-db && npm run quay:seed-storage",
|
|
"quay:seed-db": "${CLIENT:=docker} exec -i quay-db psql quay -U quay -v ON_ERROR_STOP=1 < ./cypress/test/quay-db-data.txt",
|
|
"quay:seed-storage": "${CLIENT:=docker} cp ./cypress/test/quay-storage-data/. quay-quay:/datastorage/registry"
|
|
},
|
|
"browserslist": {
|
|
"production": [
|
|
">0.2%",
|
|
"not dead",
|
|
"not op_mini all"
|
|
],
|
|
"development": [
|
|
"last 1 chrome version",
|
|
"last 1 firefox version",
|
|
"last 1 safari version"
|
|
]
|
|
},
|
|
"devDependencies": {
|
|
"@openshift/dynamic-plugin-sdk-webpack": "^3.0.1",
|
|
"@types/react-dom": "^18.2.0",
|
|
"@types/react-router-dom": "^5.3.3",
|
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
"@typescript-eslint/parser": "^5.18.0",
|
|
"axios-mock-adapter": "^1.22.0",
|
|
"copy-webpack-plugin": "^10.2.4",
|
|
"css-loader": "^6.11.0",
|
|
"css-minimizer-webpack-plugin": "^5.0.1",
|
|
"cypress-ctrf-json-reporter": "^0.0.13",
|
|
"dotenv-webpack": "^8.0.1",
|
|
"eslint": "^8.56.0",
|
|
"eslint-config-airbnb": "^19.0.4",
|
|
"eslint-config-prettier": "^9.0.0",
|
|
"eslint-config-react-app": "^7.0.1",
|
|
"eslint-import-resolver-typescript": "^2.7.1",
|
|
"eslint-plugin-import": "^2.28.1",
|
|
"eslint-plugin-jsx-a11y": "^6.7.1",
|
|
"eslint-plugin-prettier": "^5.0.0",
|
|
"eslint-plugin-react": "^7.33.0",
|
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
"file-loader": "^6.2.0",
|
|
"html-webpack-plugin": "^5.5.0",
|
|
"jws": "^4.0.0",
|
|
"moment": "^2.29.4",
|
|
"prettier": "^3.0.3",
|
|
"raw-loader": "^4.0.2",
|
|
"react-docgen-typescript-loader": "^3.7.2",
|
|
"react-dom": "^18.2.0",
|
|
"sass": "^1.64.1",
|
|
"sass-loader": "^16.0.5",
|
|
"serve": "^14.2.0",
|
|
"style-loader": "^3.3.3",
|
|
"svg-url-loader": "^8.0.0",
|
|
"terser-webpack-plugin": "^5.3.9",
|
|
"ts-loader": "^9.5.0",
|
|
"ts-node": "^10.9.1",
|
|
"tsconfig-paths-webpack-plugin": "^4.1.0",
|
|
"url-loader": "^4.1.1",
|
|
"webpack": "^5.95.0",
|
|
"webpack-cli": "^5.1.4",
|
|
"webpack-dev-server": "^4.8.1",
|
|
"webpack-merge": "^5.10.0",
|
|
"@playwright/test": "^1.56.1"
|
|
},
|
|
"optionalDependencies": {
|
|
"cypress": "^13.13.2"
|
|
},
|
|
"overrides": {
|
|
"cross-spawn": "^7.0.6",
|
|
"react": "^18.2.0",
|
|
"react-dom": "^18.2.0",
|
|
"@types/react": "^18.2.0",
|
|
"@patternfly/patternfly": "^5.0.4",
|
|
"@patternfly/react-core": "^5.1.0",
|
|
"@patternfly/react-icons": "^5.1.0",
|
|
"@patternfly/react-table": "^5.1.0"
|
|
}
|
|
}
|