1414 * limitations under the License.
1515 */
1616
17+ import fs from 'fs' ;
18+
1719import { test , expect } from './fixtures.js' ;
1820
1921test ( 'test reopen browser' , async ( { client, server } ) => {
@@ -73,7 +75,7 @@ test('persistent context', async ({ startClient, server }) => {
7375 expect ( response2 ) . toContainTextContent ( `Storage: YES` ) ;
7476} ) ;
7577
76- test ( 'ephemeral context' , async ( { startClient, server } ) => {
78+ test ( 'isolated context' , async ( { startClient, server } ) => {
7779 server . setContent ( '/' , `
7880 <body>
7981 </body>
@@ -83,7 +85,7 @@ test('ephemeral context', async ({ startClient, server }) => {
8385 </script>
8486 ` , 'text/html' ) ;
8587
86- const client = await startClient ( { args : [ `--ephemeral ` ] } ) ;
88+ const client = await startClient ( { args : [ `--isolated ` ] } ) ;
8789 const response = await client . callTool ( {
8890 name : 'browser_navigate' ,
8991 arguments : { url : server . PREFIX } ,
@@ -94,10 +96,40 @@ test('ephemeral context', async ({ startClient, server }) => {
9496 name : 'browser_close' ,
9597 } ) ;
9698
97- const client2 = await startClient ( { args : [ `--ephemeral ` ] } ) ;
99+ const client2 = await startClient ( { args : [ `--isolated ` ] } ) ;
98100 const response2 = await client2 . callTool ( {
99101 name : 'browser_navigate' ,
100102 arguments : { url : server . PREFIX } ,
101103 } ) ;
102104 expect ( response2 ) . toContainTextContent ( `Storage: NO` ) ;
103105} ) ;
106+
107+ test ( 'isolated context with storage state' , async ( { startClient, server, localOutputPath } ) => {
108+ const storageStatePath = localOutputPath ( 'storage-state.json' ) ;
109+ await fs . promises . writeFile ( storageStatePath , JSON . stringify ( {
110+ origins : [
111+ {
112+ origin : server . PREFIX ,
113+ localStorage : [ { name : 'test' , value : 'session-value' } ] ,
114+ } ,
115+ ] ,
116+ } ) ) ;
117+
118+ server . setContent ( '/' , `
119+ <body>
120+ </body>
121+ <script>
122+ document.body.textContent = 'Storage: ' + localStorage.getItem('test');
123+ </script>
124+ ` , 'text/html' ) ;
125+
126+ const client = await startClient ( { args : [
127+ `--isolated` ,
128+ `--storage-state=${ storageStatePath } ` ,
129+ ] } ) ;
130+ const response = await client . callTool ( {
131+ name : 'browser_navigate' ,
132+ arguments : { url : server . PREFIX } ,
133+ } ) ;
134+ expect ( response ) . toContainTextContent ( `Storage: session-value` ) ;
135+ } ) ;
0 commit comments