@grafana/create-plugin 7.9.1 → 7.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/package.json +3 -3
- package/templates/app/src/module.tsx +2 -8
- package/templates/common/.config/playwright.config.ts +54 -0
- package/templates/common/.nvmrc +1 -1
- package/templates/common/_package.json +2 -2
- package/templates/common/playwright.config +5 -42
- package/templates/github/workflows/bundle-stats.yml +1 -1
- package/templates/github/workflows/ci.yml +2 -2
- package/templates/github/workflows/cp-update.yml +1 -1
- package/templates/github/workflows/is-compatible.yml +1 -1
- package/templates/github/workflows/release.yml +1 -1
- package/templates/scenes-app/src/module.tsx +2 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [7.10.0](https://github.com/grafana/plugin-tools/compare/@grafana/create-plugin@7.9.2...@grafana/create-plugin@7.10.0) (2026-08-21)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **create-plugin:** make Playwright config extendable ([#2807](https://github.com/grafana/plugin-tools/issues/2807)) ([b7dd0fb](https://github.com/grafana/plugin-tools/commit/b7dd0fbf299e6a99bef04a1fc74e4f2c11a17a47))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **templates:** Update dependency @grafana/plugin-e2e to v3.11.0 ([#2825](https://github.com/grafana/plugin-tools/issues/2825)) ([d039033](https://github.com/grafana/plugin-tools/commit/d039033421febaa04a33d7dc2c039d5d761b9723))
|
|
14
|
+
|
|
15
|
+
## [7.9.2](https://github.com/grafana/plugin-tools/compare/@grafana/create-plugin@7.9.1...@grafana/create-plugin@7.9.2) (2026-08-05)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* **create-plugin:** bump valibot to 1.4.2 ([#2813](https://github.com/grafana/plugin-tools/issues/2813)) ([4920dd8](https://github.com/grafana/plugin-tools/commit/4920dd88acd6e25817dec8b0342cf0d64de8902b))
|
|
21
|
+
* **create-plugin:** unpin @playwright/test now that 1.62.1 fixes tsconfig resolution ([#2815](https://github.com/grafana/plugin-tools/issues/2815)) ([3f5dc96](https://github.com/grafana/plugin-tools/commit/3f5dc9656b48e602b099044cc1eb9b25c6e2c220))
|
|
22
|
+
* **deps:** bump plugin-actions in create-plugin templates ([#2732](https://github.com/grafana/plugin-tools/issues/2732)) ([9f43b00](https://github.com/grafana/plugin-tools/commit/9f43b00a32bfabaf9ad27b7efd409e512777e342))
|
|
23
|
+
* remove suspense boundaries from app plugin templates ([#2778](https://github.com/grafana/plugin-tools/issues/2778)) ([dd1293a](https://github.com/grafana/plugin-tools/commit/dd1293a5c9278147df465ff7521e18cb7aec754f))
|
|
24
|
+
|
|
3
25
|
## [7.9.1](https://github.com/grafana/plugin-tools/compare/@grafana/create-plugin@7.9.0...@grafana/create-plugin@7.9.1) (2026-07-29)
|
|
4
26
|
|
|
5
27
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafana/create-plugin",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.10.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"directory": "packages/create-plugin",
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
"jsonc-parser": "3.3.1",
|
|
37
37
|
"minimist": "1.2.8",
|
|
38
38
|
"recast": "0.23.12",
|
|
39
|
-
"semver": "7.8.
|
|
39
|
+
"semver": "7.8.5",
|
|
40
40
|
"title-case": "4.3.2",
|
|
41
|
-
"valibot": "1.4.
|
|
41
|
+
"valibot": "1.4.2",
|
|
42
42
|
"which": "7.0.0",
|
|
43
43
|
"yaml": "2.9.0"
|
|
44
44
|
},
|
|
@@ -1,17 +1,11 @@
|
|
|
1
1
|
import React, { Suspense, lazy } from 'react';
|
|
2
|
-
import { AppPlugin
|
|
2
|
+
import { AppPlugin } from '@grafana/data';
|
|
3
3
|
import { LoadingPlaceholder } from '@grafana/ui';
|
|
4
4
|
import type { AppConfigProps } from './components/AppConfig/AppConfig';
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
const App = lazy(() => import('./components/App/App'));
|
|
7
7
|
const LazyAppConfig = lazy(() => import('./components/AppConfig/AppConfig'));
|
|
8
8
|
|
|
9
|
-
const App = (props: AppRootProps) => (
|
|
10
|
-
<Suspense fallback={<LoadingPlaceholder text="" />}>
|
|
11
|
-
<LazyApp {...props} />
|
|
12
|
-
</Suspense>
|
|
13
|
-
);
|
|
14
|
-
|
|
15
9
|
const AppConfig = (props: AppConfigProps) => (
|
|
16
10
|
<Suspense fallback={<LoadingPlaceholder text="" />}>
|
|
17
11
|
<LazyAppConfig {...props} />
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️
|
|
3
|
+
*
|
|
4
|
+
* To extend the configuration, follow the steps in
|
|
5
|
+
* https://grafana.com/developers/plugin-tools/how-to-guides/extend-configurations#extend-the-playwright-config
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { PluginOptions } from '@grafana/plugin-e2e';
|
|
9
|
+
import { defineConfig, devices } from '@playwright/test';
|
|
10
|
+
import { dirname } from 'node:path';
|
|
11
|
+
|
|
12
|
+
const pluginE2eAuth = `${dirname(require.resolve('@grafana/plugin-e2e'))}/auth`;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* See https://playwright.dev/docs/test-configuration.
|
|
16
|
+
*/
|
|
17
|
+
export default defineConfig<PluginOptions>({
|
|
18
|
+
testDir: './tests',
|
|
19
|
+
/* Run tests in files in parallel */
|
|
20
|
+
fullyParallel: true,
|
|
21
|
+
/* Fail the build on CI if you accidentally left test.only in the source code. */
|
|
22
|
+
forbidOnly: !!process.env.CI,
|
|
23
|
+
/* Retry on CI only */
|
|
24
|
+
retries: process.env.CI ? 2 : 0,
|
|
25
|
+
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
|
|
26
|
+
reporter: 'html',
|
|
27
|
+
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
|
28
|
+
use: {
|
|
29
|
+
/* Base URL to use in actions like `await page.goto('/')`. */
|
|
30
|
+
baseURL: process.env.GRAFANA_URL || 'http://localhost:3000',
|
|
31
|
+
|
|
32
|
+
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
|
|
33
|
+
trace: 'on-first-retry',
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
/* Configure projects for major browsers */
|
|
37
|
+
projects: [
|
|
38
|
+
// 1. Login to Grafana and store the cookie on disk for use in other tests.
|
|
39
|
+
{
|
|
40
|
+
name: 'auth',
|
|
41
|
+
testDir: pluginE2eAuth,
|
|
42
|
+
testMatch: [/.*\.js/],
|
|
43
|
+
},
|
|
44
|
+
// 2. Run tests in Google Chrome. Every test will start authenticated as admin user.
|
|
45
|
+
{
|
|
46
|
+
name: 'chromium',
|
|
47
|
+
use: {
|
|
48
|
+
...devices['Desktop Chrome'],
|
|
49
|
+
storageState: 'playwright/.auth/admin.json',
|
|
50
|
+
},
|
|
51
|
+
dependencies: ['auth'],
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
});
|
package/templates/common/.nvmrc
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
24
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"license": "Apache-2.0",
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@grafana/eslint-config": "^9.0.0",
|
|
20
|
-
"@grafana/plugin-e2e": "^3.
|
|
20
|
+
"@grafana/plugin-e2e": "^3.11.0",
|
|
21
21
|
"@grafana/sign-plugin": "^3.3.3",
|
|
22
22
|
"@grafana/tsconfig": "^2.2.0",
|
|
23
|
-
"@playwright/test": "
|
|
23
|
+
"@playwright/test": "^1.62.1",{{#if useExperimentalRspack}}
|
|
24
24
|
"@rspack/core": "^1.6.0",
|
|
25
25
|
"@rspack/cli": "^1.6.0",{{/if}}
|
|
26
26
|
"@stylistic/eslint-plugin-ts": "^4.4.0",
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { PluginOptions } from '@grafana/plugin-e2e';
|
|
2
|
-
import { defineConfig
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
const pluginE2eAuth = `${dirname(require.resolve('@grafana/plugin-e2e'))}/auth`;
|
|
2
|
+
import { defineConfig } from '@playwright/test';
|
|
3
|
+
import baseConfig from './.config/playwright.config';
|
|
6
4
|
|
|
7
5
|
/**
|
|
8
6
|
* Read environment variables from file.
|
|
@@ -13,42 +11,7 @@ const pluginE2eAuth = `${dirname(require.resolve('@grafana/plugin-e2e'))}/auth`;
|
|
|
13
11
|
/**
|
|
14
12
|
* See https://playwright.dev/docs/test-configuration.
|
|
15
13
|
*/
|
|
16
|
-
export default defineConfig<PluginOptions>({
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
|
|
25
|
-
reporter: 'html',
|
|
26
|
-
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
|
27
|
-
use: {
|
|
28
|
-
/* Base URL to use in actions like `await page.goto('/')`. */
|
|
29
|
-
baseURL: process.env.GRAFANA_URL || 'http://localhost:3000',
|
|
30
|
-
|
|
31
|
-
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
|
|
32
|
-
trace: 'on-first-retry',
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
/* Configure projects for major browsers */
|
|
36
|
-
projects: [
|
|
37
|
-
// 1. Login to Grafana and store the cookie on disk for use in other tests.
|
|
38
|
-
{
|
|
39
|
-
name: 'auth',
|
|
40
|
-
testDir: pluginE2eAuth,
|
|
41
|
-
testMatch: [/.*\.js/],
|
|
42
|
-
},
|
|
43
|
-
// 2. Run tests in Google Chrome. Every test will start authenticated as admin user.
|
|
44
|
-
{
|
|
45
|
-
name: 'chromium',
|
|
46
|
-
use: {
|
|
47
|
-
...devices['Desktop Chrome'],
|
|
48
|
-
storageState: 'playwright/.auth/admin.json',
|
|
49
|
-
},
|
|
50
|
-
dependencies: ['auth'],
|
|
51
|
-
},
|
|
52
|
-
],
|
|
53
|
-
|
|
14
|
+
export default defineConfig<PluginOptions>(baseConfig, {
|
|
15
|
+
// Add your own configuration here.
|
|
16
|
+
// See https://grafana.com/developers/plugin-tools/how-to-guides/extend-configurations#extend-the-playwright-config for further info.
|
|
54
17
|
});
|
|
@@ -152,7 +152,7 @@ jobs:
|
|
|
152
152
|
|
|
153
153
|
- name: Resolve Grafana E2E versions
|
|
154
154
|
id: resolve-versions
|
|
155
|
-
uses: grafana/plugin-actions/e2e-version@e2e-version/
|
|
155
|
+
uses: grafana/plugin-actions/e2e-version@e2e-version/v3.0.1
|
|
156
156
|
|
|
157
157
|
playwright-tests:
|
|
158
158
|
needs: [resolve-versions, build]
|
|
@@ -199,7 +199,7 @@ jobs:
|
|
|
199
199
|
ANONYMOUS_AUTH_ENABLED=false DEVELOPMENT=false GRAFANA_VERSION=$\{{ matrix.GRAFANA_IMAGE.VERSION }} GRAFANA_IMAGE=$\{{ matrix.GRAFANA_IMAGE.NAME }} docker compose up -d
|
|
200
200
|
|
|
201
201
|
- name: Wait for grafana server
|
|
202
|
-
uses: grafana/plugin-actions/wait-for-grafana@wait-for-grafana/v1.0.
|
|
202
|
+
uses: grafana/plugin-actions/wait-for-grafana@wait-for-grafana/v1.0.4
|
|
203
203
|
with:
|
|
204
204
|
url: http://localhost:3000/login
|
|
205
205
|
|
|
@@ -15,7 +15,7 @@ jobs:
|
|
|
15
15
|
release:
|
|
16
16
|
runs-on: ubuntu-latest
|
|
17
17
|
steps:
|
|
18
|
-
- uses: grafana/plugin-actions/create-plugin-update@create-plugin-update/v2.0.
|
|
18
|
+
- uses: grafana/plugin-actions/create-plugin-update@create-plugin-update/v2.0.2
|
|
19
19
|
with:
|
|
20
20
|
# Make sure to save the token in your repository secrets as `GH_PAT_TOKEN`
|
|
21
21
|
token: $\{{ secrets.GH_PAT_TOKEN }}
|
|
@@ -36,7 +36,7 @@ jobs:
|
|
|
36
36
|
echo "modulets=${MODULETS}" >> $GITHUB_OUTPUT
|
|
37
37
|
|
|
38
38
|
- name: Compatibility check
|
|
39
|
-
uses: grafana/plugin-actions/is-compatible@is-compatible/v1.0.
|
|
39
|
+
uses: grafana/plugin-actions/is-compatible@is-compatible/v1.0.3
|
|
40
40
|
with:
|
|
41
41
|
module: $\{{ steps.find-module-ts.outputs.modulets }}
|
|
42
42
|
comment-pr: "no"
|
|
@@ -20,7 +20,7 @@ jobs:
|
|
|
20
20
|
with:
|
|
21
21
|
persist-credentials: false
|
|
22
22
|
|
|
23
|
-
- uses: grafana/plugin-actions/build-plugin@build-plugin/v1.0
|
|
23
|
+
- uses: grafana/plugin-actions/build-plugin@build-plugin/v1.2.0
|
|
24
24
|
# Uncomment to enable plugin signing
|
|
25
25
|
# (For more info on how to generate the access policy token see https://grafana.com/developers/plugin-tools/publish-a-plugin/sign-a-plugin#generate-an-access-policy-token)
|
|
26
26
|
#with:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { Suspense, lazy } from 'react';
|
|
2
|
-
import { AppPlugin
|
|
2
|
+
import { AppPlugin } from '@grafana/data';
|
|
3
3
|
import { initPluginTranslations } from '@grafana/i18n';
|
|
4
4
|
import { loadResources } from '@grafana/scenes';
|
|
5
5
|
import { LoadingPlaceholder } from '@grafana/ui';
|
|
@@ -8,15 +8,9 @@ import pluginJson from 'plugin.json';
|
|
|
8
8
|
|
|
9
9
|
await initPluginTranslations(pluginJson.id, [loadResources]);
|
|
10
10
|
|
|
11
|
-
const
|
|
11
|
+
const App = lazy(() => import('./components/App/App'));
|
|
12
12
|
const LazyAppConfig = lazy(() => import('./components/AppConfig/AppConfig'));
|
|
13
13
|
|
|
14
|
-
const App = (props: AppRootProps) => (
|
|
15
|
-
<Suspense fallback={<LoadingPlaceholder text="" />}>
|
|
16
|
-
<LazyApp {...props} />
|
|
17
|
-
</Suspense>
|
|
18
|
-
);
|
|
19
|
-
|
|
20
14
|
const AppConfig = (props: AppConfigProps) => (
|
|
21
15
|
<Suspense fallback={<LoadingPlaceholder text="" />}>
|
|
22
16
|
<LazyAppConfig {...props} />
|