-
Notifications
You must be signed in to change notification settings - Fork 7
/
playwright.config.ts
154 lines (146 loc) · 4.5 KB
/
playwright.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
import type { PluginOptions } from "@grafana/plugin-e2e";
import { defineConfig, devices } from "@playwright/test";
import { dirname } from "node:path";
const pluginE2eAuth = `${dirname(require.resolve("@grafana/plugin-e2e"))}/auth`;
/**
* Read environment variables from file.
* https://github.com/motdotla/dotenv
*/
// require('dotenv').config();
/**
* See https://playwright.dev/docs/test-configuration.
*/
export default defineConfig<PluginOptions>({
testDir: "./tests",
/* Run tests in files in parallel */
fullyParallel: true,
/* Fail the build on CI if you accidentally left test.only in the source code. */
forbidOnly: !!process.env.CI,
/* Retry on CI only */
retries: process.env.CI ? 2 : 0,
/* Opt out of parallel tests on CI. */
workers: process.env.CI ? 1 : undefined,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: "html",
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
/* Base URL to use in actions like `await page.goto('/')`. */
// baseURL: "http://localhost:3080",
/* Context options */
viewport: { width: 1920, height: 1200 },
/* Ignore certificate errors */
ignoreHTTPSErrors: true,
/* Auth */
grafanaAPICredentials: {
user: "admin",
password: "admin",
},
httpCredentials: {
username: "admin",
password: "admin",
},
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
trace: "on-first-retry",
video: "retain-on-failure",
},
/* Configure projects for major browsers */
projects: [
// Login to Grafana with admin user and store the cookie on disk for use in other tests
{
name: "authenticateAdminUser",
testDir: "./tests/setup",
testMatch: [/.*auth\.setup\.ts/],
use: {
baseURL: `http://localhost:3080`,
user: {
user: "admin",
password: "admin",
},
},
},
// Login to Grafana with new user with viewer role and store the cookie on disk for use in other tests
{
name: "createUserAndAuthenticate",
testDir: "./tests/setup",
testMatch: [/.*auth\.setup\.ts/],
use: {
baseURL: `https://localhost:3443`,
user: {
user: "viewer",
password: "password",
role: "Viewer",
},
},
},
// Login to Grafana with teamuser user and store the cookie on disk for use in other tests
{
name: "authenticateTeamUser",
testDir: "./tests/setup",
testMatch: [/.*auth\.setup\.ts/],
use: {
baseURL: `http://localhost:3080`,
user: {
user: "teamuser",
password: "teamuser",
},
},
},
// Login to Grafana with normaluser user and store the cookie on disk for use in other tests
{
name: "authenticateNormalUser",
testDir: "./tests/setup",
testMatch: [/.*auth\.setup\.ts/],
use: {
baseURL: `https://localhost:3443`,
user: {
user: "normaluser",
password: "normaluser",
},
},
},
// Plain without TLS and using admin user
{
name: "plainAdminUser",
testIgnore: /(appReportTeamUser|appReportNormalUser)\.spec\.ts/,
use: {
...devices["Desktop Chrome"],
baseURL: `http://localhost:3080`,
storageState: "playwright/.auth/admin.json",
},
dependencies: ["authenticateAdminUser"],
},
// With TLS and using user with Viewer role
{
name: "tlsViewerUser",
testIgnore: /(appConfig|appReportTeamUser|appReportNormalUser)\.spec\.ts/,
use: {
...devices["Desktop Chrome"],
baseURL: `https://localhost:3443`,
storageState: "playwright/.auth/viewer.json",
},
dependencies: ["createUserAndAuthenticate"],
},
// Plain without TLS and using teamuser
{
name: "plainTeamUser",
testMatch: /appReportTeamUser\.spec\.ts/,
use: {
...devices["Desktop Chrome"],
baseURL: `http://localhost:3080`,
storageState: "playwright/.auth/teamuser.json",
},
dependencies: ["authenticateTeamUser"],
},
// With TLS and using normaluser
{
name: "tlsNormalUser",
testMatch: /appReportNormalUser\.spec\.ts/,
use: {
...devices["Desktop Chrome"],
baseURL: `https://localhost:3443`,
storageState: "playwright/.auth/normaluser.json",
},
dependencies: ["authenticateNormalUser"],
},
],
});