@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 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.9.1",
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.2",
39
+ "semver": "7.8.5",
40
40
  "title-case": "4.3.2",
41
- "valibot": "1.4.1",
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, type AppRootProps } from '@grafana/data';
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 LazyApp = lazy(() => import('./components/App/App'));
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
+ });
@@ -1 +1 @@
1
- 22
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.10.0",
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": "~1.61.1",{{#if useExperimentalRspack}}
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, devices } from '@playwright/test';
3
- import { dirname } from 'node:path';
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
- 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
- /* 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
  });
@@ -24,4 +24,4 @@ jobs:
24
24
  with:
25
25
  persist-credentials: false
26
26
 
27
- - uses: grafana/plugin-actions/bundle-size@bundle-size/v1.0.2
27
+ - uses: grafana/plugin-actions/bundle-size@bundle-size/v1.1.0
@@ -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/v2.0.0
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.2
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.1
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.2
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.2
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, type AppRootProps } from '@grafana/data';
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 LazyApp = lazy(() => import('./components/App/App'));
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} />