2022-06-03 08:09:47 -06:00
|
|
|
{
|
|
|
|
|
"name": "grafana-oncall-app",
|
2023-07-26 18:57:57 +08:00
|
|
|
"version": "dev-oss",
|
2022-06-03 08:09:47 -06:00
|
|
|
"description": "Grafana OnCall Plugin",
|
|
|
|
|
"scripts": {
|
2022-10-24 14:27:03 +02:00
|
|
|
"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",
|
2022-11-02 11:44:42 +00:00
|
|
|
"stylelint": "stylelint ./src/**/*.{css,scss,module.css,module.scss}",
|
|
|
|
|
"stylelint:fix": "stylelint --fix ./src/**/*.{css,scss,module.css,module.scss}",
|
2022-06-03 08:09:47 -06:00
|
|
|
"build": "grafana-toolkit plugin:build",
|
2022-11-07 16:34:43 +01:00
|
|
|
"build:dev": "grafana-toolkit plugin:build --skipTest --skipLint",
|
2022-10-12 14:05:26 +03:00
|
|
|
"test": "jest --verbose",
|
2023-01-30 13:34:35 +03:00
|
|
|
"test:silent": "jest --silent",
|
fix a few flaky e2e tests + allow running project locally via k8s/helm (#2751)
# 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)
2023-08-22 19:03:29 +02:00
|
|
|
"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",
|
2022-06-03 08:09:47 -06:00
|
|
|
"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": {
|
2022-12-22 13:38:47 +02:00
|
|
|
"@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",
|
2022-12-22 15:06:55 +02:00
|
|
|
"@babel/preset-env": "^7.18.10",
|
|
|
|
|
"@babel/preset-react": "^7.18.6",
|
|
|
|
|
"@babel/preset-typescript": "^7.18.6",
|
2023-05-17 22:12:51 +02:00
|
|
|
"@grafana/eslint-config": "^5.1.0",
|
|
|
|
|
"@grafana/toolkit": "^9.5.2",
|
2022-11-16 11:56:54 +02:00
|
|
|
"@jest/globals": "^27.5.1",
|
2023-06-21 10:08:26 +02:00
|
|
|
"@playwright/test": "^1.35.1",
|
2022-10-07 14:56:13 +03:00
|
|
|
"@testing-library/jest-dom": "^5.16.5",
|
|
|
|
|
"@testing-library/react": "12",
|
2022-11-21 16:26:00 +01:00
|
|
|
"@testing-library/user-event": "^14.4.3",
|
2022-08-25 19:31:42 +03:00
|
|
|
"@types/dompurify": "^2.3.4",
|
2022-11-03 16:58:34 +02:00
|
|
|
"@types/jest": "27.5.1",
|
2022-08-25 19:31:42 +03:00
|
|
|
"@types/lodash-es": "^4.17.6",
|
first UI integration test - phone verification + receive SMS alert flow (#900)
**What this PR does**:
Adds our first UI integration test using
[Playwright](https://playwright.dev/) and runs the test on CI. Right now
the test:
- logs into Grafana
- configures the plugin (if it isn't already)
- creates an OnCall schedule, where the current user will be OnCall
- creates an escalation chain to notify based on the newly created
OnCall schedule
- creates a webhook integration, attached to the created escalation
chain
- sends a demo alert for the new integration
- goes to the alert groups page and validates that the escalation step
to alert the OnCall user actually happened
Currently the Playwright tests are run against the 3 default headless
browsers, chromium, Firefox, and webkit. The CI job that runs these
tests is run as a matrix against 3 tagged versions of `grafana`; `main`,
`latest`, and `9.2.6`.
Secondly, it adds most of the logic for a second test which:
- logs into Grafana
- configures the plugin (if it isn't already)
- goes to the user's settings, verifies their phone number (using a tool
called [MailSlurp](https://www.mailslurp.com/))
- configures the current user's default escalation policy to send alerts
via SMS
- creates an escalation policy and configures it to send alerts to our
current user
- creates an integration and assigns the created escalation policy
- triggers a test alert + verifies that we receive the SMS alert text
(again, using MailSlurp)
**Which issue(s) this PR fixes**:
Closes #873
**Checklist**
- [x] Tests updated
- [ ] Documentation added (N/A)
- [ ] `CHANGELOG.md` updated (N/A)
2023-03-06 17:28:52 +01:00
|
|
|
"@types/node": "^18.11.9",
|
2022-11-21 16:26:00 +01:00
|
|
|
"@types/query-string": "^6.3.0",
|
2022-08-25 19:31:42 +03:00
|
|
|
"@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",
|
2022-10-13 16:04:03 +03:00
|
|
|
"@types/react-test-renderer": "^17.0.2",
|
2022-11-21 16:26:00 +01:00
|
|
|
"@types/react-transition-group": "^4.4.5",
|
2022-08-25 19:31:42 +03:00
|
|
|
"@types/throttle-debounce": "^5.0.0",
|
2022-10-24 14:27:03 +02:00
|
|
|
"@typescript-eslint/eslint-plugin": "^5.40.1",
|
2022-11-03 16:58:34 +02:00
|
|
|
"babel-plugin-dynamic-import-node": "^2.3.3",
|
2022-08-25 19:31:42 +03:00
|
|
|
"copy-webpack-plugin": "^11.0.0",
|
|
|
|
|
"dompurify": "^2.3.12",
|
2022-12-15 17:47:30 +02:00
|
|
|
"dotenv": "^16.0.3",
|
2022-10-24 14:27:03 +02:00
|
|
|
"eslint": "^8.25.0",
|
2023-05-17 22:12:51 +02:00
|
|
|
"eslint-plugin-jsdoc": "^44.2.4",
|
2022-10-24 14:27:03 +02:00
|
|
|
"eslint-plugin-react": "^7.31.10",
|
|
|
|
|
"eslint-plugin-react-hooks": "^4.6.0",
|
2022-06-03 08:09:47 -06:00
|
|
|
"eslint-plugin-rulesdir": "^0.2.1",
|
2022-11-03 16:58:34 +02:00
|
|
|
"jest": "27.5.1",
|
|
|
|
|
"jest-environment-jsdom": "^27.5.1",
|
2022-06-03 08:09:47 -06:00
|
|
|
"lint-staged": "^10.2.11",
|
2022-08-25 19:31:42 +03:00
|
|
|
"lodash-es": "^4.17.21",
|
first UI integration test - phone verification + receive SMS alert flow (#900)
**What this PR does**:
Adds our first UI integration test using
[Playwright](https://playwright.dev/) and runs the test on CI. Right now
the test:
- logs into Grafana
- configures the plugin (if it isn't already)
- creates an OnCall schedule, where the current user will be OnCall
- creates an escalation chain to notify based on the newly created
OnCall schedule
- creates a webhook integration, attached to the created escalation
chain
- sends a demo alert for the new integration
- goes to the alert groups page and validates that the escalation step
to alert the OnCall user actually happened
Currently the Playwright tests are run against the 3 default headless
browsers, chromium, Firefox, and webkit. The CI job that runs these
tests is run as a matrix against 3 tagged versions of `grafana`; `main`,
`latest`, and `9.2.6`.
Secondly, it adds most of the logic for a second test which:
- logs into Grafana
- configures the plugin (if it isn't already)
- goes to the user's settings, verifies their phone number (using a tool
called [MailSlurp](https://www.mailslurp.com/))
- configures the current user's default escalation policy to send alerts
via SMS
- creates an escalation policy and configures it to send alerts to our
current user
- creates an integration and assigns the created escalation policy
- triggers a test alert + verifies that we receive the SMS alert text
(again, using MailSlurp)
**Which issue(s) this PR fixes**:
Closes #873
**Checklist**
- [x] Tests updated
- [ ] Documentation added (N/A)
- [ ] `CHANGELOG.md` updated (N/A)
2023-03-06 17:28:52 +01:00
|
|
|
"mailslurp-client": "^15.14.1",
|
2022-08-25 19:31:42 +03:00
|
|
|
"moment-timezone": "^0.5.35",
|
2022-06-03 08:09:47 -06:00
|
|
|
"plop": "^2.7.4",
|
2022-08-26 12:26:33 +03:00
|
|
|
"postcss-loader": "^7.0.1",
|
2022-11-03 16:20:20 +02:00
|
|
|
"react": "17.0.2",
|
|
|
|
|
"react-dom": "17.0.2",
|
2022-10-13 16:04:03 +03:00
|
|
|
"react-test-renderer": "^17.0.2",
|
2022-10-24 14:27:03 +02:00
|
|
|
"stylelint-config-prettier": "^9.0.3",
|
|
|
|
|
"stylelint-prettier": "^2.0.0",
|
2022-11-03 16:20:20 +02:00
|
|
|
"ts-jest": "29.0.3",
|
2022-08-25 19:31:42 +03:00
|
|
|
"ts-loader": "^9.3.1",
|
2022-10-24 14:27:03 +02:00
|
|
|
"typescript": "4.6.4",
|
2022-08-25 19:31:42 +03:00
|
|
|
"webpack-bundle-analyzer": "^4.6.1"
|
2022-06-03 08:09:47 -06:00
|
|
|
},
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=14"
|
|
|
|
|
},
|
|
|
|
|
"dependencies": {
|
2022-12-20 17:47:22 +02:00
|
|
|
"@grafana/data": "^9.2.4",
|
|
|
|
|
"@grafana/faro-web-sdk": "^1.0.0-beta4",
|
|
|
|
|
"@grafana/faro-web-tracing": "^1.0.0-beta4",
|
2023-11-01 13:50:50 +02:00
|
|
|
"@grafana/labels": "~1.2.1",
|
2022-12-20 17:47:22 +02:00
|
|
|
"@grafana/runtime": "9.3.0-beta1",
|
2023-05-03 16:51:45 +02:00
|
|
|
"@grafana/ui": "^9.4.7",
|
2022-12-09 11:02:06 +02:00
|
|
|
"@opentelemetry/api": "^1.3.0",
|
2022-06-17 12:19:34 +03:00
|
|
|
"array-move": "^4.0.0",
|
2022-06-03 08:09:47 -06:00
|
|
|
"change-case": "^4.1.1",
|
|
|
|
|
"circular-dependency-plugin": "^5.2.2",
|
2022-09-07 16:05:19 +03:00
|
|
|
"dayjs": "^1.11.5",
|
2022-06-03 08:09:47 -06:00
|
|
|
"eslint-plugin-import": "^2.25.4",
|
2022-08-25 19:31:42 +03:00
|
|
|
"mobx": "5.13.0",
|
|
|
|
|
"mobx-react": "6.1.1",
|
2023-01-31 20:00:14 +03:00
|
|
|
"object-hash": "^3.0.0",
|
2023-01-09 17:50:55 +02:00
|
|
|
"prettier": "^2.8.2",
|
2023-02-24 13:14:45 +02:00
|
|
|
"raw-loader": "^4.0.2",
|
2022-06-03 08:09:47 -06:00
|
|
|
"rc-table": "^7.17.1",
|
|
|
|
|
"react-copy-to-clipboard": "^5.0.2",
|
2022-06-17 12:19:34 +03:00
|
|
|
"react-draggable": "^4.4.5",
|
2022-06-03 08:09:47 -06:00
|
|
|
"react-emoji-render": "^1.2.4",
|
2022-06-17 12:19:34 +03:00
|
|
|
"react-modal": "^3.15.1",
|
2022-11-22 16:57:15 +01:00
|
|
|
"react-qr-code": "^2.0.8",
|
2022-06-03 08:09:47 -06:00
|
|
|
"react-responsive": "^8.1.0",
|
2023-01-18 13:11:59 +03:00
|
|
|
"react-router-dom": "5.3.3",
|
2022-06-03 08:09:47 -06:00
|
|
|
"react-sortable-hoc": "^1.11.0",
|
|
|
|
|
"react-string-replace": "^0.4.4",
|
2022-08-29 13:19:56 +03:00
|
|
|
"react-transition-group": "^4.4.5",
|
2022-09-07 16:05:19 +03:00
|
|
|
"sass-loader": "^13.0.2",
|
2022-06-03 08:09:47 -06:00
|
|
|
"stylelint": "^13.13.1",
|
|
|
|
|
"stylelint-config-standard": "^22.0.0",
|
|
|
|
|
"throttle-debounce": "^2.1.0"
|
|
|
|
|
}
|
|
|
|
|
}
|