@@ -2,18 +2,32 @@ import { test, expect } from "@playwright/test";
2
2
import getPort from "get-port" ;
3
3
4
4
import {
5
+ type TemplateName ,
5
6
createProject ,
6
7
customDev ,
7
8
EXPRESS_SERVER ,
8
9
viteConfig ,
9
10
} from "./helpers/vite.js" ;
10
11
11
- let getFiles = async ( { envDir, port } : { envDir ?: string ; port : number } ) => {
12
+ const templateNames = [
13
+ "vite-5-template" ,
14
+ "rsc-vite-framework" ,
15
+ ] as const satisfies TemplateName [ ] ;
16
+
17
+ let getFiles = async ( {
18
+ templateName,
19
+ envDir,
20
+ port,
21
+ } : {
22
+ templateName : TemplateName ;
23
+ envDir ?: string ;
24
+ port : number ;
25
+ } ) => {
12
26
let envPath = `${ envDir ? `${ envDir } /` : "" } .env` ;
13
27
14
28
return {
15
- "vite.config.js" : await viteConfig . basic ( { port, envDir } ) ,
16
- "server.mjs" : EXPRESS_SERVER ( { port } ) ,
29
+ "vite.config.js" : await viteConfig . basic ( { templateName , port, envDir } ) ,
30
+ "server.mjs" : EXPRESS_SERVER ( { port, templateName } ) ,
17
31
[ envPath ] : `
18
32
ENV_VAR_FROM_DOTENV_FILE=Content from ${ envPath } file
19
33
` ,
@@ -49,72 +63,90 @@ let getFiles = async ({ envDir, port }: { envDir?: string; port: number }) => {
49
63
} ;
50
64
51
65
test . describe ( "Vite .env" , ( ) => {
52
- test . describe ( "defaults" , async ( ) => {
53
- let port : number ;
54
- let cwd : string ;
55
- let stop : ( ) => void ;
56
-
57
- test . beforeAll ( async ( ) => {
58
- port = await getPort ( ) ;
59
- cwd = await createProject ( await getFiles ( { port } ) ) ;
60
- stop = await customDev ( { cwd, port } ) ;
61
- } ) ;
62
- test . afterAll ( ( ) => stop ( ) ) ;
63
-
64
- test ( "express" , async ( { page } ) => {
65
- let pageErrors : unknown [ ] = [ ] ;
66
- page . on ( "pageerror" , ( error ) => pageErrors . push ( error ) ) ;
67
-
68
- await page . goto ( `http://localhost:${ port } /dotenv` , {
69
- waitUntil : "networkidle" ,
66
+ for ( const templateName of templateNames ) {
67
+ test . describe ( `template: ${ templateName } ` , ( ) => {
68
+ test . describe ( "defaults" , async ( ) => {
69
+ let port : number ;
70
+ let cwd : string ;
71
+ let stop : ( ) => void ;
72
+
73
+ test . beforeAll ( async ( ) => {
74
+ port = await getPort ( ) ;
75
+ cwd = await createProject (
76
+ await getFiles ( { port, templateName } ) ,
77
+ templateName ,
78
+ ) ;
79
+ stop = await customDev ( { cwd, port } ) ;
80
+ } ) ;
81
+ test . afterAll ( ( ) => stop ( ) ) ;
82
+
83
+ test ( "express" , async ( { page } ) => {
84
+ let pageErrors : unknown [ ] = [ ] ;
85
+ page . on ( "pageerror" , ( error ) => pageErrors . push ( error ) ) ;
86
+
87
+ await page . goto ( `http://localhost:${ port } /dotenv` , {
88
+ waitUntil : "networkidle" ,
89
+ } ) ;
90
+ expect ( pageErrors ) . toEqual ( [ ] ) ;
91
+
92
+ let loaderContent = page . locator (
93
+ "[data-dotenv-route-loader-content]" ,
94
+ ) ;
95
+ await expect ( loaderContent ) . toHaveText ( "Content from .env file" ) ;
96
+
97
+ let clientContent = page . locator (
98
+ "[data-dotenv-route-client-content]" ,
99
+ ) ;
100
+ await expect ( clientContent ) . toHaveText (
101
+ "process.env.ENV_VAR_FROM_DOTENV_FILE not available on the client, which is a good thing" ,
102
+ ) ;
103
+
104
+ expect ( pageErrors ) . toEqual ( [ ] ) ;
105
+ } ) ;
70
106
} ) ;
71
- expect ( pageErrors ) . toEqual ( [ ] ) ;
72
-
73
- let loaderContent = page . locator ( "[data-dotenv-route-loader-content]" ) ;
74
- await expect ( loaderContent ) . toHaveText ( "Content from .env file" ) ;
75
-
76
- let clientContent = page . locator ( "[data-dotenv-route-client-content]" ) ;
77
- await expect ( clientContent ) . toHaveText (
78
- "process.env.ENV_VAR_FROM_DOTENV_FILE not available on the client, which is a good thing" ,
79
- ) ;
80
-
81
- expect ( pageErrors ) . toEqual ( [ ] ) ;
82
- } ) ;
83
- } ) ;
84
-
85
- test . describe ( "custom env dir" , async ( ) => {
86
- let port : number ;
87
- let cwd : string ;
88
- let stop : ( ) => void ;
89
-
90
- test . beforeAll ( async ( ) => {
91
- const envDir = "custom-env-dir" ;
92
- port = await getPort ( ) ;
93
- cwd = await createProject ( await getFiles ( { envDir, port } ) ) ;
94
- stop = await customDev ( { cwd, port } ) ;
95
- } ) ;
96
- test . afterAll ( ( ) => stop ( ) ) ;
97
-
98
- test ( "express" , async ( { page } ) => {
99
- let pageErrors : unknown [ ] = [ ] ;
100
- page . on ( "pageerror" , ( error ) => pageErrors . push ( error ) ) ;
101
107
102
- await page . goto ( `http://localhost:${ port } /dotenv` , {
103
- waitUntil : "networkidle" ,
108
+ test . describe ( "custom env dir" , async ( ) => {
109
+ let port : number ;
110
+ let cwd : string ;
111
+ let stop : ( ) => void ;
112
+
113
+ test . beforeAll ( async ( ) => {
114
+ const envDir = "custom-env-dir" ;
115
+ port = await getPort ( ) ;
116
+ cwd = await createProject (
117
+ await getFiles ( { envDir, port, templateName } ) ,
118
+ templateName ,
119
+ ) ;
120
+ stop = await customDev ( { cwd, port } ) ;
121
+ } ) ;
122
+ test . afterAll ( ( ) => stop ( ) ) ;
123
+
124
+ test ( "express" , async ( { page } ) => {
125
+ let pageErrors : unknown [ ] = [ ] ;
126
+ page . on ( "pageerror" , ( error ) => pageErrors . push ( error ) ) ;
127
+
128
+ await page . goto ( `http://localhost:${ port } /dotenv` , {
129
+ waitUntil : "networkidle" ,
130
+ } ) ;
131
+ expect ( pageErrors ) . toEqual ( [ ] ) ;
132
+
133
+ let loaderContent = page . locator (
134
+ "[data-dotenv-route-loader-content]" ,
135
+ ) ;
136
+ await expect ( loaderContent ) . toHaveText (
137
+ "Content from custom-env-dir/.env file" ,
138
+ ) ;
139
+
140
+ let clientContent = page . locator (
141
+ "[data-dotenv-route-client-content]" ,
142
+ ) ;
143
+ await expect ( clientContent ) . toHaveText (
144
+ "process.env.ENV_VAR_FROM_DOTENV_FILE not available on the client, which is a good thing" ,
145
+ ) ;
146
+
147
+ expect ( pageErrors ) . toEqual ( [ ] ) ;
148
+ } ) ;
104
149
} ) ;
105
- expect ( pageErrors ) . toEqual ( [ ] ) ;
106
-
107
- let loaderContent = page . locator ( "[data-dotenv-route-loader-content]" ) ;
108
- await expect ( loaderContent ) . toHaveText (
109
- "Content from custom-env-dir/.env file" ,
110
- ) ;
111
-
112
- let clientContent = page . locator ( "[data-dotenv-route-client-content]" ) ;
113
- await expect ( clientContent ) . toHaveText (
114
- "process.env.ENV_VAR_FROM_DOTENV_FILE not available on the client, which is a good thing" ,
115
- ) ;
116
-
117
- expect ( pageErrors ) . toEqual ( [ ] ) ;
118
150
} ) ;
119
- } ) ;
151
+ }
120
152
} ) ;
0 commit comments