File tree Expand file tree Collapse file tree 3 files changed +88
-0
lines changed
Expand file tree Collapse file tree 3 files changed +88
-0
lines changed Original file line number Diff line number Diff line change 11import { commands } from "@vitest/browser/context" ;
22import {
3+ type BufferEncoding ,
34 type FileSystemTree ,
45 WebContainer as WebContainerApi ,
56} from "@webcontainer/api" ;
@@ -81,4 +82,28 @@ export class WebContainer {
8182
8283 return output . trim ( ) ;
8384 }
85+
86+ async readFile ( path : string , encoding : BufferEncoding = "utf8" ) {
87+ return this . _instance . fs . readFile ( path , encoding ) ;
88+ }
89+
90+ async writeFile ( path : string , data : string , encoding = "utf8" ) {
91+ return this . _instance . fs . writeFile ( path , data , { encoding } ) ;
92+ }
93+
94+ async rename ( oldPath : string , newPath : string ) {
95+ return this . _instance . fs . rename ( oldPath , newPath ) ;
96+ }
97+
98+ async mkdir ( path : string ) {
99+ return this . _instance . fs . mkdir ( path ) ;
100+ }
101+
102+ async readdir ( path : string ) {
103+ return this . _instance . fs . readdir ( path ) ;
104+ }
105+
106+ async rm ( path : string ) {
107+ return this . _instance . fs . rm ( path ) ;
108+ }
84109}
Original file line number Diff line number Diff line change 1+ import { expect } from "vitest" ;
2+ import { test } from "../src" ;
3+
4+ test ( "user can create files and folders into webcontainer" , async ( {
5+ webcontainer,
6+ } ) => {
7+ await webcontainer . writeFile ( "/example" , "Hello world" ) ;
8+ await webcontainer . mkdir ( "/folder" ) ;
9+
10+ await expect ( webcontainer . readdir ( "/" ) ) . resolves . toStrictEqual ( [
11+ "example" ,
12+ "folder" ,
13+ ] ) ;
14+ await expect ( webcontainer . readFile ( "/example" ) ) . resolves . toBe ( "Hello world" ) ;
15+ } ) ;
16+
17+ test ( "user can rename files and folders in webcontainer" , async ( {
18+ webcontainer,
19+ } ) => {
20+ await webcontainer . writeFile ( "/example" , "Hello world" ) ;
21+ await webcontainer . mkdir ( "/folder" ) ;
22+
23+ await webcontainer . rename ( "/example" , "/example-2" ) ;
24+ await webcontainer . rename ( "/folder" , "/folder-2" ) ;
25+
26+ await expect ( webcontainer . readdir ( "/" ) ) . resolves . toStrictEqual ( [
27+ "example-2" ,
28+ "folder-2" ,
29+ ] ) ;
30+ } ) ;
31+
32+ test ( "user can remove files from webcontainer" , async ( { webcontainer } ) => {
33+ await webcontainer . writeFile ( "/first" , "1" ) ;
34+ await webcontainer . writeFile ( "/second" , "2" ) ;
35+ await webcontainer . writeFile ( "/third" , "3" ) ;
36+
37+ await webcontainer . rm ( "/second" ) ;
38+ await expect ( webcontainer . readdir ( "/" ) ) . resolves . toStrictEqual ( [
39+ "first" ,
40+ "third" ,
41+ ] ) ;
42+ } ) ;
Original file line number Diff line number Diff line change @@ -11,3 +11,24 @@ test("user can see server output in preview", async ({
1111
1212 await preview . getByRole ( "heading" , { level : 1 , name : "Hello Vite!" } ) ;
1313} ) ;
14+
15+ test ( "user can see HMR changes in preview" , async ( {
16+ webcontainer,
17+ preview,
18+ } ) => {
19+ await webcontainer . mount ( "test/fixtures/starter-vite" ) ;
20+
21+ await webcontainer . runCommand ( "npm" , [ "install" ] ) ;
22+ void webcontainer . runCommand ( "npm" , [ "run" , "dev" ] ) ;
23+
24+ await preview . getByRole ( "heading" , { level : 1 , name : "Hello Vite!" } ) ;
25+
26+ const content = await webcontainer . readFile ( "/src/main.js" ) ;
27+
28+ await webcontainer . writeFile (
29+ "/src/main.js" ,
30+ content . replace ( "Hello Vite!" , "Modified title!" ) ,
31+ ) ;
32+
33+ await preview . getByRole ( "heading" , { level : 1 , name : "Modified title!" } ) ;
34+ } ) ;
You can’t perform that action at this time.
0 commit comments