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'
 | 
						|
  ]);
 | 
						|
});
 |