11import { test , expect } from '../../../playwright' ;
2- import { closeAllCollections } from '../../utils/page' ;
2+ import { closeAllCollections , createCollection } from '../../utils/page' ;
33
44test . describe ( 'Cross-Collection Drag and Drop for folder' , ( ) => {
55 test . afterEach ( async ( { page } ) => {
@@ -8,18 +8,8 @@ test.describe('Cross-Collection Drag and Drop for folder', () => {
88 } ) ;
99
1010 test ( 'Verify cross-collection folder drag and drop' , async ( { page, createTmpDir } ) => {
11- // Create first collection - click dropdown menu first
12- await page . locator ( '.dropdown-icon' ) . click ( ) ;
13- await page . locator ( '.dropdown-item' ) . filter ( { hasText : 'Create Collection' } ) . click ( ) ;
14- await page . getByLabel ( 'Name' ) . fill ( 'source-collection' ) ;
15- await page . getByLabel ( 'Location' ) . fill ( await createTmpDir ( 'source-collection' ) ) ;
16- await page . getByRole ( 'button' , { name : 'Create' , exact : true } ) . click ( ) ;
17-
18- // Wait for collection to appear and click on it
19- await expect ( page . locator ( '#sidebar-collection-name' ) . filter ( { hasText : 'source-collection' } ) ) . toBeVisible ( ) ;
20- await page . locator ( '#sidebar-collection-name' ) . filter ( { hasText : 'source-collection' } ) . click ( ) ;
21- await page . getByLabel ( 'Safe Mode' ) . check ( ) ;
22- await page . getByRole ( 'button' , { name : 'Save' } ) . click ( ) ;
11+ // Create first collection - open with sandbox mode
12+ await createCollection ( page , 'source-collection' , await createTmpDir ( 'source-collection' ) , { openWithSandboxMode : 'safe' } ) ;
2313
2414 // Create a folder in the first collection
2515 // Look for the collection menu button for the source collection specifically
@@ -34,37 +24,28 @@ test.describe('Cross-Collection Drag and Drop for folder', () => {
3424 await page . getByRole ( 'button' , { name : 'Create' } ) . click ( ) ;
3525
3626 // Wait for the folder to be created and appear in the sidebar
37- await page . waitForTimeout ( 2000 ) ;
27+ await page . waitForTimeout ( 200 ) ;
3828 await expect ( page . locator ( '.collection-item-name' ) . filter ( { hasText : 'test-folder' } ) ) . toBeVisible ( ) ;
3929
4030 // Add a request to the folder to make it more realistic
41- await page . locator ( '.collection-item-name' ) . filter ( { hasText : 'test-folder' } ) . click ( { button : 'right' } ) ;
31+ await page . locator ( '.collection-item-name' ) . filter ( { hasText : 'test-folder' } ) . hover ( ) ;
32+ await page . locator ( '.collection-item-name' ) . filter ( { hasText : 'test-folder' } ) . locator ( '.menu-icon' ) . click ( ) ;
4233 await page . locator ( '.dropdown-item' ) . filter ( { hasText : 'New Request' } ) . click ( ) ;
4334 await page . getByPlaceholder ( 'Request Name' ) . fill ( 'test-request-in-folder' ) ;
4435 await page . locator ( '#new-request-url .CodeMirror' ) . click ( ) ;
4536 await page . locator ( 'textarea' ) . fill ( 'https://echo.usebruno.com' ) ;
4637 await page . getByRole ( 'button' , { name : 'Create' } ) . click ( ) ;
4738
4839 // Wait for the request to be created
49- await page . waitForTimeout ( 1000 ) ;
40+ await page . waitForTimeout ( 200 ) ;
5041
5142 // Expand the folder to see the request inside
5243 await page . locator ( '.collection-item-name' ) . filter ( { hasText : 'test-folder' } ) . click ( ) ;
53- await page . waitForTimeout ( 500 ) ;
44+ await page . waitForTimeout ( 200 ) ;
5445 await expect ( page . locator ( '.collection-item-name' ) . filter ( { hasText : 'test-request-in-folder' } ) ) . toBeVisible ( ) ;
5546
56- // Create second collection - click dropdown menu first
57- await page . locator ( '.dropdown-icon' ) . click ( ) ;
58- await page . locator ( '.dropdown-item' ) . filter ( { hasText : 'Create Collection' } ) . click ( ) ;
59- await page . getByLabel ( 'Name' ) . fill ( 'target-collection' ) ;
60- await page . getByLabel ( 'Location' ) . fill ( await createTmpDir ( 'target-collection' ) ) ;
61- await page . getByRole ( 'button' , { name : 'Create' , exact : true } ) . click ( ) ;
62-
63- // Wait for second collection to appear and click on it
64- await expect ( page . locator ( '#sidebar-collection-name' ) . filter ( { hasText : 'target-collection' } ) ) . toBeVisible ( ) ;
65- await page . locator ( '#sidebar-collection-name' ) . filter ( { hasText : 'target-collection' } ) . click ( ) ;
66- await page . getByLabel ( 'Safe Mode' ) . check ( ) ;
67- await page . getByRole ( 'button' , { name : 'Save' } ) . click ( ) ;
47+ // Create second collection - open with sandbox mode
48+ await createCollection ( page , 'target-collection' , await createTmpDir ( 'target-collection' ) , { openWithSandboxMode : 'safe' } ) ;
6849
6950 // Wait for both collections to be visible in sidebar
7051 await expect ( page . locator ( '#sidebar-collection-name' ) . filter ( { hasText : 'source-collection' } ) ) . toBeVisible ( ) ;
@@ -82,12 +63,12 @@ test.describe('Cross-Collection Drag and Drop for folder', () => {
8263 await sourceFolder . dragTo ( targetCollection ) ;
8364
8465 // Wait for the operation to complete
85- await page . waitForTimeout ( 3000 ) ;
66+ await page . waitForTimeout ( 200 ) ;
8667
8768 // Verify the folder has been moved to the target collection
8869 // Click on target collection to expand it if needed
8970 await page . locator ( '#sidebar-collection-name' ) . filter ( { hasText : 'target-collection' } ) . click ( ) ;
90- await page . waitForTimeout ( 1000 ) ;
71+ await page . waitForTimeout ( 200 ) ;
9172
9273 // Check that the folder now appears under target collection
9374 const targetCollectionContainer = page
@@ -100,7 +81,7 @@ test.describe('Cross-Collection Drag and Drop for folder', () => {
10081
10182 // Expand the moved folder to verify the request inside is also moved
10283 await targetCollectionContainer . locator ( '.collection-item-name' ) . filter ( { hasText : 'test-folder' } ) . click ( ) ;
103- await page . waitForTimeout ( 500 ) ;
84+ await page . waitForTimeout ( 200 ) ;
10485 await expect (
10586 targetCollectionContainer . locator ( '.collection-item-name' ) . filter ( { hasText : 'test-request-in-folder' } )
10687 ) . toBeVisible ( ) ;
@@ -125,17 +106,7 @@ test.describe('Cross-Collection Drag and Drop for folder', () => {
125106 createTmpDir
126107 } ) => {
127108 // Create first collection (source) - use unique names for this test
128- await page . locator ( '.dropdown-icon' ) . click ( ) ;
129- await page . locator ( '.dropdown-item' ) . filter ( { hasText : 'Create Collection' } ) . click ( ) ;
130- await page . getByLabel ( 'Name' ) . fill ( 'source-collection' ) ;
131- await page . getByLabel ( 'Location' ) . fill ( await createTmpDir ( 'source-collection' ) ) ;
132- await page . getByRole ( 'button' , { name : 'Create' , exact : true } ) . click ( ) ;
133-
134- // Wait for collection to appear and click on it
135- await expect ( page . locator ( '#sidebar-collection-name' ) . filter ( { hasText : 'source-collection' } ) ) . toBeVisible ( ) ;
136- await page . locator ( '#sidebar-collection-name' ) . filter ( { hasText : 'source-collection' } ) . click ( ) ;
137- await page . getByLabel ( 'Safe Mode' ) . check ( ) ;
138- await page . getByRole ( 'button' , { name : 'Save' } ) . click ( ) ;
109+ await createCollection ( page , 'source-collection' , await createTmpDir ( 'source-collection' ) , { openWithSandboxMode : 'safe' } ) ;
139110
140111 // Create a folder in the first collection
141112 await page
@@ -158,7 +129,8 @@ test.describe('Cross-Collection Drag and Drop for folder', () => {
158129 await expect ( page . locator ( '.collection-item-name' ) . filter ( { hasText : 'folder-1' } ) ) . toBeVisible ( ) ;
159130
160131 // Add a request to the folder to make it more realistic
161- await page . locator ( '.collection-item-name' ) . filter ( { hasText : 'folder-1' } ) . click ( { button : 'right' } ) ;
132+ await page . locator ( '.collection-item-name' ) . filter ( { hasText : 'folder-1' } ) . hover ( ) ;
133+ await page . locator ( '.collection-item-name' ) . filter ( { hasText : 'folder-1' } ) . locator ( '.menu-icon' ) . click ( ) ;
162134 await page . locator ( '.dropdown-item' ) . filter ( { hasText : 'New Request' } ) . click ( ) ;
163135 await page . getByPlaceholder ( 'Request Name' ) . fill ( 'http-request' ) ;
164136 await page . locator ( '#new-request-url .CodeMirror' ) . click ( ) ;
@@ -169,17 +141,7 @@ test.describe('Cross-Collection Drag and Drop for folder', () => {
169141 await expect ( page . locator ( '.collection-item-name' ) . filter ( { hasText : 'http-request' } ) ) . toBeVisible ( ) ;
170142
171143 // Create second collection (target)
172- await page . locator ( '.dropdown-icon' ) . click ( ) ;
173- await page . locator ( '.dropdown-item' ) . filter ( { hasText : 'Create Collection' } ) . click ( ) ;
174- await page . getByLabel ( 'Name' ) . fill ( 'target-collection' ) ;
175- await page . getByLabel ( 'Location' ) . fill ( await createTmpDir ( 'target-collection' ) ) ;
176- await page . getByRole ( 'button' , { name : 'Create' , exact : true } ) . click ( ) ;
177-
178- // Wait for second collection to appear and click on it
179- await expect ( page . locator ( '#sidebar-collection-name' ) . filter ( { hasText : 'target-collection' } ) ) . toBeVisible ( ) ;
180- await page . locator ( '#sidebar-collection-name' ) . filter ( { hasText : 'target-collection' } ) . click ( ) ;
181- await page . getByLabel ( 'Safe Mode' ) . check ( ) ;
182- await page . getByRole ( 'button' , { name : 'Save' } ) . click ( ) ;
144+ await createCollection ( page , 'target-collection' , await createTmpDir ( 'target-collection' ) , { openWithSandboxMode : 'safe' } ) ;
183145
184146 // Create a folder with the same name in the target collection
185147 await page
0 commit comments