Skip to content

Commit 025f454

Browse files
github actions workflows added (#445)
Fixes grafana/data-sources#299 --------- Co-authored-by: Gareth Dawson <email@garethdawson.xyz>
1 parent 7227f62 commit 025f454

File tree

7 files changed

+187
-19
lines changed

7 files changed

+187
-19
lines changed

.github/workflows/lint.yml

Lines changed: 0 additions & 15 deletions
This file was deleted.

.github/workflows/publish.yaml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Plugins - CD
2+
run-name: Deploy ${{ inputs.branch }} to ${{ inputs.environment }} by @${{ github.actor }}
3+
4+
on:
5+
workflow_dispatch:
6+
inputs:
7+
branch:
8+
description: Branch to publish from. Can be used to deploy PRs to dev
9+
default: main
10+
environment:
11+
description: Environment to publish to
12+
required: true
13+
type: choice
14+
options:
15+
- 'dev'
16+
- 'ops'
17+
- 'prod'
18+
docs-only:
19+
description: Only publish docs, do not publish the plugin
20+
default: false
21+
type: boolean
22+
23+
jobs:
24+
cd:
25+
name: CD
26+
uses: grafana/plugin-ci-workflows/.github/workflows/cd.yml@main
27+
with:
28+
go-version: '1.23.5'
29+
branch: ${{ github.event.inputs.branch }}
30+
environment: ${{ github.event.inputs.environment }}
31+
docs-only: ${{ fromJSON(github.event.inputs.docs-only) }}
32+
run-playwright: true

.github/workflows/push.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Plugins - CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
9+
jobs:
10+
ci:
11+
name: CI
12+
uses: grafana/plugin-ci-workflows/.github/workflows/ci.yml@main
13+
with:
14+
go-version: '1.23.5'
15+
plugin-version-suffix: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || '' }}
16+
run-playwright: true

.gitignore

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,13 @@ dist/
2424
artifacts/
2525
work/
2626
ci/
27-
e2e-results/
27+
28+
# playwright
29+
test-results/
30+
playwright-report/
31+
blob-report/
32+
playwright/.cache/
33+
playwright/.auth/
2834

2935
# Editor
3036
.idea

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,10 @@
1010
"scripts": {
1111
"build": "webpack -c ./.config/webpack/webpack.config.ts --env production",
1212
"dev": "webpack -w -c ./.config/webpack/webpack.config.ts --env development",
13-
"e2e": "yarn exec cypress install && yarn exec grafana-e2e run",
14-
"e2e:update": "yarn exec cypress install && yarn exec grafana-e2e run --update-screenshots",
13+
"e2e": "yarn playwright test",
1514
"lint": "eslint --cache --ignore-path ./.gitignore --ext .js,.jsx,.ts,.tsx .",
1615
"lint:fix": "yarn run lint --fix",
17-
"server": "docker-compose up --build",
16+
"server": "docker compose up --build",
1817
"sign": "npx --yes @grafana/sign-plugin@latest",
1918
"spellcheck": "cspell -c cspell.config.json \"**/*.{ts,tsx,js,go,md,mdx,yml,yaml,json,scss,css}\"",
2019
"test": "jest --watch --onlyChanged",
@@ -46,7 +45,9 @@
4645
"devDependencies": {
4746
"@babel/core": "^7.21.4",
4847
"@grafana/eslint-config": "^6.0.0",
48+
"@grafana/plugin-e2e": "^1.14.6",
4949
"@grafana/tsconfig": "^1.2.0-rc1",
50+
"@playwright/test": "^1.48.0",
5051
"@swc/core": "1.3.75",
5152
"@swc/helpers": "^0.5.0",
5253
"@swc/jest": "^0.2.26",

playwright.config.ts

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import type { PluginOptions } from '@grafana/plugin-e2e';
2+
import { defineConfig, devices } from '@playwright/test';
3+
import { dirname } from 'node:path';
4+
5+
const pluginE2eAuth = `${dirname(require.resolve('@grafana/plugin-e2e'))}/auth`;
6+
7+
/**
8+
* Read environment variables from file.
9+
* https://github.com/motdotla/dotenv
10+
*/
11+
// require('dotenv').config();
12+
13+
/**
14+
* See https://playwright.dev/docs/test-configuration.
15+
*/
16+
export default defineConfig<PluginOptions>({
17+
testDir: './tests',
18+
/* Run tests in files in parallel */
19+
fullyParallel: true,
20+
/* Fail the build on CI if you accidentally left test.only in the source code. */
21+
forbidOnly: !!process.env.CI,
22+
/* Retry on CI only */
23+
retries: process.env.CI ? 2 : 0,
24+
/* Opt out of parallel tests on CI. */
25+
workers: process.env.CI ? 1 : undefined,
26+
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
27+
reporter: 'html',
28+
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
29+
use: {
30+
/* Base URL to use in actions like `await page.goto('/')`. */
31+
baseURL: 'http://localhost:3000',
32+
33+
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
34+
trace: 'on-first-retry',
35+
},
36+
37+
/* Configure projects for major browsers */
38+
projects: [
39+
// 1. Login to Grafana and store the cookie on disk for use in other tests.
40+
{
41+
name: 'auth',
42+
testDir: pluginE2eAuth,
43+
testMatch: [/.*\.js/],
44+
},
45+
// 2. Run tests in Google Chrome. Every test will start authenticated as admin user.
46+
{
47+
name: 'chromium',
48+
use: { ...devices['Desktop Chrome'], storageState: 'playwright/.auth/admin.json' },
49+
dependencies: ['auth'],
50+
},
51+
],
52+
});

yarn.lock

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -954,6 +954,16 @@
954954
tslib "2.6.2"
955955
typescript "5.3.3"
956956

957+
"@grafana/e2e-selectors@^11.5.0-216287":
958+
version "11.5.0-216566"
959+
resolved "https://registry.yarnpkg.com/@grafana/e2e-selectors/-/e2e-selectors-11.5.0-216566.tgz#bec2387690e2a9046dcd97e29102fc22f72af11d"
960+
integrity sha512-uhMZxhVOsMjLIRNI7yJRXcfm+F1LXLITdCCkKNh5ATMLe67utpTKWK89Yi9534R0SN38i8w8ReChehetbR0gFA==
961+
dependencies:
962+
"@grafana/tsconfig" "^2.0.0"
963+
semver "7.6.3"
964+
tslib "2.8.1"
965+
typescript "5.7.3"
966+
957967
"@grafana/eslint-config@^6.0.0":
958968
version "6.0.1"
959969
resolved "https://registry.yarnpkg.com/@grafana/eslint-config/-/eslint-config-6.0.1.tgz#70f3e1990ab83591b566dec7bce214a1eb4d09c4"
@@ -994,6 +1004,16 @@
9941004
ua-parser-js "^1.0.32"
9951005
web-vitals "^3.1.1"
9961006

1007+
"@grafana/plugin-e2e@^1.14.6":
1008+
version "1.14.6"
1009+
resolved "https://registry.yarnpkg.com/@grafana/plugin-e2e/-/plugin-e2e-1.14.6.tgz#3ad08b4fd5aadee8dfd9170c7bb6d5e31a67bb53"
1010+
integrity sha512-YnARXviUFI+Ez0ygi1CypBHZGY+rNIShI428Mnrj8bn48mr0lCeiI/V2NGsQUz5YJegIfP1JSb05gb/7t8avBQ==
1011+
dependencies:
1012+
"@grafana/e2e-selectors" "^11.5.0-216287"
1013+
semver "^7.5.4"
1014+
uuid "^11.0.2"
1015+
yaml "^2.3.4"
1016+
9971017
"@grafana/runtime@10.4.2":
9981018
version "10.4.2"
9991019
resolved "https://registry.yarnpkg.com/@grafana/runtime/-/runtime-10.4.2.tgz#863f53d7c2344196e91d689c6ad91e4cdaf78309"
@@ -1023,6 +1043,11 @@
10231043
resolved "https://registry.yarnpkg.com/@grafana/tsconfig/-/tsconfig-1.2.0-rc1.tgz#10973c978ec95b0ea637511254b5f478bce04de7"
10241044
integrity sha512-+SgQeBQ1pT6D/E3/dEdADqTrlgdIGuexUZ8EU+8KxQFKUeFeU7/3z/ayI2q/wpJ/Kr6WxBBNlrST6aOKia19Ag==
10251045

1046+
"@grafana/tsconfig@^2.0.0":
1047+
version "2.0.0"
1048+
resolved "https://registry.yarnpkg.com/@grafana/tsconfig/-/tsconfig-2.0.0.tgz#277aba907ddbe0301dc37248923e6bd2b68f5151"
1049+
integrity sha512-cxC3Htv/GidI5FeVGAzj/lYZTMMz/Cfsc8VOQFO3Ichjx3hUjyjeoBUIpVSVMnIjKUdA5ycdxtMYPHIuIrk8+A==
1050+
10261051
"@grafana/ui@10.4.2":
10271052
version "10.4.2"
10281053
resolved "https://registry.yarnpkg.com/@grafana/ui/-/ui-10.4.2.tgz#4781a9172a0aae4d420161dce1414876d62d3ae4"
@@ -1596,6 +1621,13 @@
15961621
picocolors "^1.0.0"
15971622
tslib "^2.6.0"
15981623

1624+
"@playwright/test@^1.48.0":
1625+
version "1.49.1"
1626+
resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.49.1.tgz#55fa360658b3187bfb6371e2f8a64f50ef80c827"
1627+
integrity sha512-Ky+BVzPz8pL6PQxHqNRW1k3mIyv933LML7HktS8uik0bUXNCdPhoS/kLihiO1tMf/egaJb4IutXd7UywvXEW+g==
1628+
dependencies:
1629+
playwright "1.49.1"
1630+
15991631
"@popperjs/core@2.11.8":
16001632
version "2.11.8"
16011633
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
@@ -4606,6 +4638,11 @@ fs.realpath@^1.0.0:
46064638
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
46074639
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
46084640

4641+
fsevents@2.3.2:
4642+
version "2.3.2"
4643+
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
4644+
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
4645+
46094646
fsevents@^2.3.2, fsevents@~2.3.2:
46104647
version "2.3.3"
46114648
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
@@ -6674,6 +6711,20 @@ pkg-dir@^4.2.0:
66746711
dependencies:
66756712
find-up "^4.0.0"
66766713

6714+
playwright-core@1.49.1:
6715+
version "1.49.1"
6716+
resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.49.1.tgz#32c62f046e950f586ff9e35ed490a424f2248015"
6717+
integrity sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==
6718+
6719+
playwright@1.49.1:
6720+
version "1.49.1"
6721+
resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.49.1.tgz#830266dbca3008022afa7b4783565db9944ded7c"
6722+
integrity sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA==
6723+
dependencies:
6724+
playwright-core "1.49.1"
6725+
optionalDependencies:
6726+
fsevents "2.3.2"
6727+
66776728
portfinder@^1.0.17:
66786729
version "1.0.32"
66796730
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81"
@@ -7606,6 +7657,11 @@ selection-is-backward@^1.0.0:
76067657
resolved "https://registry.yarnpkg.com/selection-is-backward/-/selection-is-backward-1.0.0.tgz#97a54633188a511aba6419fc5c1fa91b467e6be1"
76077658
integrity sha512-C+6PCOO55NLCfS8uQjUKV/6E5XMuUcfOVsix5m0QqCCCKi495NgeQVNfWtAaD71NKHsdmFCJoXUGfir3qWdr9A==
76087659

7660+
semver@7.6.3:
7661+
version "7.6.3"
7662+
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
7663+
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
7664+
76097665
semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
76107666
version "6.3.1"
76117667
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
@@ -8270,6 +8326,11 @@ tslib@2.6.2, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.0:
82708326
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
82718327
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
82728328

8329+
tslib@2.8.1:
8330+
version "2.8.1"
8331+
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
8332+
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
8333+
82738334
tslib@^1.8.1:
82748335
version "1.14.1"
82758336
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
@@ -8370,6 +8431,11 @@ typescript@5.3.3:
83708431
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37"
83718432
integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==
83728433

8434+
typescript@5.7.3:
8435+
version "5.7.3"
8436+
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e"
8437+
integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==
8438+
83738439
ua-parser-js@^1.0.32:
83748440
version "1.0.36"
83758441
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.36.tgz#a9ab6b9bd3a8efb90bb0816674b412717b7c428c"
@@ -8460,6 +8526,11 @@ uuid@9.0.1:
84608526
resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30"
84618527
integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
84628528

8529+
uuid@^11.0.2:
8530+
version "11.0.5"
8531+
resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.0.5.tgz#07b46bdfa6310c92c3fb3953a8720f170427fc62"
8532+
integrity sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==
8533+
84638534
uuid@^8.3.2:
84648535
version "8.3.2"
84658536
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
@@ -8790,6 +8861,11 @@ yaml@^1.10.0:
87908861
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
87918862
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
87928863

8864+
yaml@^2.3.4:
8865+
version "2.7.0"
8866+
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98"
8867+
integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==
8868+
87938869
yargs-parser@^21.1.1:
87948870
version "21.1.1"
87958871
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"

0 commit comments

Comments
 (0)