1
0
mirror of https://github.com/quay/quay.git synced 2026-01-26 06:21:37 +03:00
Files
quay/web/package.json
jbpratt 69b7aff5b4 chore: add Playwright e2e test infrastructure (#4688)
* 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>
2025-12-12 18:40:38 -06:00

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"
}
}