@@ -11,7 +11,7 @@ import { executeOnceAndFetch } from '../execute-fetch';
11
11
import { describeServeBuilder } from '../jasmine-helpers' ;
12
12
import { BASE_OPTIONS , DEV_SERVER_BUILDER_INFO } from '../setup' ;
13
13
14
- describeServeBuilder ( executeDevServer , DEV_SERVER_BUILDER_INFO , ( harness , setupTarget , isVite ) => {
14
+ describeServeBuilder ( executeDevServer , DEV_SERVER_BUILDER_INFO , ( harness , setupTarget ) => {
15
15
const javascriptFileContent =
16
16
"import {foo} from 'unresolved'; /* a comment */const foo = `bar`;\n\n\n" ;
17
17
@@ -95,31 +95,51 @@ describeServeBuilder(executeDevServer, DEV_SERVER_BUILDER_INFO, (harness, setupT
95
95
expect ( await response ?. text ( ) ) . toContain ( '<h1>Login page</h1>' ) ;
96
96
} ) ;
97
97
98
- ( isVite ? it : xit ) (
99
- `should return the asset that matches '.html' when path has no trailing '/'` ,
100
- async ( ) => {
101
- await harness . writeFile (
102
- 'src/login/new.html' ,
103
- '<html><body><h1>Login page</h1></body><html>' ,
104
- ) ;
105
-
106
- setupTarget ( harness , {
107
- assets : [ 'src/login' ] ,
108
- optimization : {
109
- scripts : true ,
110
- } ,
111
- } ) ;
112
-
113
- harness . useTarget ( 'serve' , {
114
- ...BASE_OPTIONS ,
115
- } ) ;
116
-
117
- const { result, response } = await executeOnceAndFetch ( harness , 'login/new' ) ;
118
-
119
- expect ( result ?. success ) . toBeTrue ( ) ;
120
- expect ( await response ?. status ) . toBe ( 200 ) ;
121
- expect ( await response ?. text ( ) ) . toContain ( '<h1>Login page</h1>' ) ;
122
- } ,
123
- ) ;
98
+ it ( `should return the asset that matches '.html' when path has no trailing '/'` , async ( ) => {
99
+ await harness . writeFile ( 'src/login/new.html' , '<html><body><h1>Login page</h1></body><html>' ) ;
100
+
101
+ setupTarget ( harness , {
102
+ assets : [ 'src/login' ] ,
103
+ optimization : {
104
+ scripts : true ,
105
+ } ,
106
+ } ) ;
107
+
108
+ harness . useTarget ( 'serve' , {
109
+ ...BASE_OPTIONS ,
110
+ } ) ;
111
+
112
+ const { result, response } = await executeOnceAndFetch ( harness , 'login/new' ) ;
113
+
114
+ expect ( result ?. success ) . toBeTrue ( ) ;
115
+ expect ( await response ?. status ) . toBe ( 200 ) ;
116
+ expect ( await response ?. text ( ) ) . toContain ( '<h1>Login page</h1>' ) ;
117
+ } ) ;
118
+
119
+ it ( `should return a redirect when an asset directory is accessed without a trailing '/'` , async ( ) => {
120
+ await harness . writeFile (
121
+ 'src/login/index.html' ,
122
+ '<html><body><h1>Login page</h1></body><html>' ,
123
+ ) ;
124
+
125
+ setupTarget ( harness , {
126
+ assets : [ 'src/login' ] ,
127
+ optimization : {
128
+ scripts : true ,
129
+ } ,
130
+ } ) ;
131
+
132
+ harness . useTarget ( 'serve' , {
133
+ ...BASE_OPTIONS ,
134
+ } ) ;
135
+
136
+ const { result, response } = await executeOnceAndFetch ( harness , 'login' , {
137
+ request : { redirect : 'manual' } ,
138
+ } ) ;
139
+
140
+ expect ( result ?. success ) . toBeTrue ( ) ;
141
+ expect ( await response ?. status ) . toBe ( 301 ) ;
142
+ expect ( await response ?. headers . get ( 'Location' ) ) . toBe ( '/login/' ) ;
143
+ } ) ;
124
144
} ) ;
125
145
} ) ;
0 commit comments