# What this PR does - updates the GitHub Actions workflow to move the e2e tests into a "[reusable workflow](https://docs.github.com/en/actions/using-workflows/reusing-workflows#creating-a-reusable-workflow)" which are run in two scenarios: - all tests _except_ those annotated as `@expensive` are run against `grafana/grafana:latest` on all feature branches - all tests _including_ `@expensive` tests are run on weekdays @ 07h00 UTC, against a matrix of 6 grafana versions. Results of these builds will be posted to `#irm-amixr-flux` Slack channel. - local development will now be: ```bash make build-dev-images init-k8s start-k8s ``` - `build-dev-images` - builds the engine and UI docker images (only need to run first time) - `init-k8s` - creates a `kind` cluster and loads the two Docker images onto the cluster nodes (only need to run first time) - `start-k8s` - switches `kubectl` context to the created `kind` cluster, and uses `helm` to deploy everything as defined in `./dev/helm-local.yml` and `./dev/helm-local.dev.yml` (that latter file is `.gitignored` and specific to how _you_ want your setup to look like. Hot reloading works as before. This is the _start_ of #2381. (I've marked these `make` commands as beta, because they've not yet been thoroughly tested for local development). - modifies the `helm` chart to add the concept of `oncall.devMode`, `ui`, and ability to run oncall w/ sqlite - `oncall.devMode` will essentially just add `volumes` and `volumeMounts` to the various engine/migrate containers + - `ui.enabled` + `ui.env` - create a ui container (which is needed for hot reloading locally) - `sqlite` - this was useful for the e2e test environments where Github runner resources are scarce. Running `mariadb` eats up precious resources, instead lets just use sqlite here - fixes an issue that caused sporadic HTTP 502s from the grafana plugin-proxy, which led to flaky tests. See [this comment](https://github.com/grafana/oncall/pull/2751/files#diff-09040e8df192699b9c5742110ebbe8d9d5c3938cb156cc1cb99fa1c3fdee4fefR72-R77) for more context + a link to a relevant Slack conversation. **tldr;** there is a bug with the Grafana plugin proxy in Grafana >= v10.0.3. Let's stop using the `latest`/`main` docker tags in our test and pin to `10.0.2` for now - ~~re-enables the e2e test which validates a phone number via SMS, and asserts that we can receive an alert escalation via SMS (new Mailslurp API Key has been added as a repo secret)~~ update: this is still blocked by procurement, will be done in a future PR ## Checklist - [x] Unit, integration, and e2e (if applicable) tests updated - [x] Documentation added (or `pr:no public docs` PR label added if not required) - [x] `CHANGELOG.md` updated (or `pr:no changelog` PR label added if not required)
145 lines
5.1 KiB
JSON
145 lines
5.1 KiB
JSON
{
|
|
"name": "grafana-oncall-app",
|
|
"version": "dev-oss",
|
|
"description": "Grafana OnCall Plugin",
|
|
"scripts": {
|
|
"lint": "eslint --cache --ext .js,.jsx,.ts,.tsx --max-warnings=0 ./src",
|
|
"lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --max-warnings=0 --quiet ./src",
|
|
"stylelint": "stylelint ./src/**/*.{css,scss,module.css,module.scss}",
|
|
"stylelint:fix": "stylelint --fix ./src/**/*.{css,scss,module.css,module.scss}",
|
|
"build": "grafana-toolkit plugin:build",
|
|
"build:dev": "grafana-toolkit plugin:build --skipTest --skipLint",
|
|
"test": "jest --verbose",
|
|
"test:silent": "jest --silent",
|
|
"test:e2e": "yarn playwright test --grep-invert @expensive",
|
|
"test:e2e-expensive": "yarn playwright test --grep @expensive",
|
|
"cleanup-e2e-results": "rm -rf playwright-report && rm -rf test-results",
|
|
"e2e-show-report": "yarn playwright show-report",
|
|
"dev": "grafana-toolkit plugin:dev",
|
|
"watch": "grafana-toolkit plugin:dev --watch",
|
|
"sign": "grafana-toolkit plugin:sign",
|
|
"ci-build:finish": "grafana-toolkit plugin:ci-build --finish",
|
|
"ci-package": "grafana-toolkit plugin:ci-package",
|
|
"ci-report": "grafana-toolkit plugin:ci-report",
|
|
"start": "yarn watch",
|
|
"plop": "plop",
|
|
"setversion": "setversion"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/grafana/oncall.git"
|
|
},
|
|
"lint-staged": {
|
|
"*.ts?(x)": [
|
|
"prettier --write",
|
|
"eslint --fix"
|
|
],
|
|
"*.js?(x)": [
|
|
"prettier --write",
|
|
"eslint --fix"
|
|
],
|
|
"*.css": [
|
|
"stylelint --fix"
|
|
]
|
|
},
|
|
"author": "Grafana Labs",
|
|
"license": "Apache-2.0",
|
|
"devDependencies": {
|
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
"@babel/plugin-proposal-decorators": "^7.20.0",
|
|
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
|
|
"@babel/plugin-proposal-object-rest-spread": "^7.18.9",
|
|
"@babel/plugin-proposal-optional-chaining": "^7.18.9",
|
|
"@babel/plugin-syntax-decorators": "^7.18.6",
|
|
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
|
"@babel/plugin-transform-destructuring": "^7.20.0",
|
|
"@babel/plugin-transform-react-constant-elements": "^7.18.12",
|
|
"@babel/plugin-transform-runtime": "^7.19.6",
|
|
"@babel/plugin-transform-typescript": "^7.18.12",
|
|
"@babel/preset-env": "^7.18.10",
|
|
"@babel/preset-react": "^7.18.6",
|
|
"@babel/preset-typescript": "^7.18.6",
|
|
"@grafana/eslint-config": "^5.1.0",
|
|
"@grafana/toolkit": "^9.5.2",
|
|
"@jest/globals": "^27.5.1",
|
|
"@playwright/test": "^1.35.1",
|
|
"@testing-library/jest-dom": "^5.16.5",
|
|
"@testing-library/react": "12",
|
|
"@testing-library/user-event": "^14.4.3",
|
|
"@types/dompurify": "^2.3.4",
|
|
"@types/jest": "27.5.1",
|
|
"@types/lodash-es": "^4.17.6",
|
|
"@types/node": "^18.11.9",
|
|
"@types/query-string": "^6.3.0",
|
|
"@types/react-copy-to-clipboard": "^5.0.4",
|
|
"@types/react-dom": "^18.0.6",
|
|
"@types/react-responsive": "^8.0.5",
|
|
"@types/react-router-dom": "^5.3.3",
|
|
"@types/react-test-renderer": "^17.0.2",
|
|
"@types/react-transition-group": "^4.4.5",
|
|
"@types/throttle-debounce": "^5.0.0",
|
|
"@typescript-eslint/eslint-plugin": "^5.40.1",
|
|
"babel-plugin-dynamic-import-node": "^2.3.3",
|
|
"copy-webpack-plugin": "^11.0.0",
|
|
"dompurify": "^2.3.12",
|
|
"dotenv": "^16.0.3",
|
|
"eslint": "^8.25.0",
|
|
"eslint-plugin-jsdoc": "^44.2.4",
|
|
"eslint-plugin-react": "^7.31.10",
|
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
"eslint-plugin-rulesdir": "^0.2.1",
|
|
"jest": "27.5.1",
|
|
"jest-environment-jsdom": "^27.5.1",
|
|
"lint-staged": "^10.2.11",
|
|
"lodash-es": "^4.17.21",
|
|
"mailslurp-client": "^15.14.1",
|
|
"moment-timezone": "^0.5.35",
|
|
"plop": "^2.7.4",
|
|
"postcss-loader": "^7.0.1",
|
|
"react": "17.0.2",
|
|
"react-dom": "17.0.2",
|
|
"react-test-renderer": "^17.0.2",
|
|
"stylelint-config-prettier": "^9.0.3",
|
|
"stylelint-prettier": "^2.0.0",
|
|
"ts-jest": "29.0.3",
|
|
"ts-loader": "^9.3.1",
|
|
"typescript": "4.6.4",
|
|
"webpack-bundle-analyzer": "^4.6.1"
|
|
},
|
|
"engines": {
|
|
"node": ">=14"
|
|
},
|
|
"dependencies": {
|
|
"@grafana/data": "^9.2.4",
|
|
"@grafana/faro-web-sdk": "^1.0.0-beta4",
|
|
"@grafana/faro-web-tracing": "^1.0.0-beta4",
|
|
"@grafana/runtime": "9.3.0-beta1",
|
|
"@grafana/ui": "^9.4.7",
|
|
"@opentelemetry/api": "^1.3.0",
|
|
"array-move": "^4.0.0",
|
|
"change-case": "^4.1.1",
|
|
"circular-dependency-plugin": "^5.2.2",
|
|
"dayjs": "^1.11.5",
|
|
"eslint-plugin-import": "^2.25.4",
|
|
"mobx": "5.13.0",
|
|
"mobx-react": "6.1.1",
|
|
"object-hash": "^3.0.0",
|
|
"prettier": "^2.8.2",
|
|
"raw-loader": "^4.0.2",
|
|
"rc-table": "^7.17.1",
|
|
"react-copy-to-clipboard": "^5.0.2",
|
|
"react-draggable": "^4.4.5",
|
|
"react-emoji-render": "^1.2.4",
|
|
"react-modal": "^3.15.1",
|
|
"react-qr-code": "^2.0.8",
|
|
"react-responsive": "^8.1.0",
|
|
"react-router-dom": "5.3.3",
|
|
"react-sortable-hoc": "^1.11.0",
|
|
"react-string-replace": "^0.4.4",
|
|
"react-transition-group": "^4.4.5",
|
|
"sass-loader": "^13.0.2",
|
|
"stylelint": "^13.13.1",
|
|
"stylelint-config-standard": "^22.0.0",
|
|
"throttle-debounce": "^2.1.0"
|
|
}
|
|
}
|