mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // @ts-check
 | |
| const { test, expect } = require('@playwright/test');
 | |
| 
 | |
| test.beforeEach(async ({page}) => {
 | |
|   await page.addInitScript(() => {
 | |
|     class FileSystemHandleMock {
 | |
|       constructor({name, children}) {
 | |
|         this.name = name;
 | |
|         children ??= [];
 | |
|         this.kind = children.length ? 'directory' : 'file';
 | |
|         this._children = children;
 | |
|       }
 | |
| 
 | |
|       values() {
 | |
|         // Wrap children data in the same mock.
 | |
|         return this._children.map(c => new FileSystemHandleMock(c));
 | |
|       }
 | |
|     }
 | |
|     // Create mock directory
 | |
|     const mockDir = new FileSystemHandleMock({
 | |
|       name: 'root',
 | |
|       children: [
 | |
|         {
 | |
|           name: 'file1',
 | |
|         },
 | |
|         {
 | |
|           name: 'dir1',
 | |
|           children: [
 | |
|             {
 | |
|               name: 'file2',
 | |
|             },
 | |
|             {
 | |
|               name: 'file3',
 | |
|             }
 | |
|           ]
 | |
|         },
 | |
|         {
 | |
|           name: 'dir2',
 | |
|           children: [
 | |
|             {
 | |
|               name: 'file4',
 | |
|             },
 | |
|             {
 | |
|               name: 'file5',
 | |
|             }
 | |
|           ]
 | |
|         }
 | |
|       ]
 | |
|     });
 | |
|     // Make the picker return mock directory
 | |
|     window.showDirectoryPicker = async () => mockDir;
 | |
|   });
 | |
| });
 | |
| 
 | |
| test('should display directory tree', async ({ page }) => {
 | |
|   await page.goto('/ls-dir.html');
 | |
|   await page.locator('button', { hasText: 'Open directory' }).click();
 | |
|   // Check that the displayed entries match mock directory.
 | |
|   await expect(page.locator('#dir')).toContainText([
 | |
|     'file1',
 | |
|     'dir1', 'file2', 'file3',
 | |
|     'dir2', 'file4', 'file5'
 | |
|   ]);
 | |
| });
 | 
