181 lines
6.6 KiB
JavaScript
181 lines
6.6 KiB
JavaScript
const { _electron: electron } = require('@playwright/test')
|
|
const {
|
|
test: it
|
|
} = require('@playwright/test')
|
|
const { describe } = it
|
|
it.setTimeout(100000)
|
|
const delay = require('./common/wait')
|
|
const { getTerminalContent } = require('./common/basic-terminal-test')
|
|
const appOptions = require('./common/app-options')
|
|
const extendClient = require('./common/client-extend')
|
|
const { expect } = require('./common/expect')
|
|
|
|
const {
|
|
setupSftpConnection,
|
|
createFolder,
|
|
deleteItem,
|
|
accessFolderFromTerminal,
|
|
renameItem,
|
|
enterFolder,
|
|
navigateToParentFolder,
|
|
verifyFileExists,
|
|
verifyCurrentPath,
|
|
clickSftpTab,
|
|
countFileListItems
|
|
} = require('./common/common')
|
|
|
|
describe('file-item-context-menu', function () {
|
|
it('should test gotoFolderInTerminal function', async function () {
|
|
const electronApp = await electron.launch(appOptions)
|
|
const client = await electronApp.firstWindow()
|
|
extendClient(client, electronApp)
|
|
await delay(3500)
|
|
|
|
// Click sftp tab first
|
|
await clickSftpTab(client)
|
|
|
|
// Create a new folder
|
|
const folderName = 'test-folder-' + Date.now()
|
|
await createFolder(client, 'local', folderName)
|
|
|
|
// Access folder from terminal
|
|
await accessFolderFromTerminal(client, 'local', folderName)
|
|
|
|
// Verify terminal has cd command and folder name
|
|
const terminalContent = await getTerminalContent(client)
|
|
expect(terminalContent.includes('cd ')).toBe(true)
|
|
expect(terminalContent.includes(folderName)).toBe(true)
|
|
|
|
// Clean up - delete the test folder
|
|
await clickSftpTab(client)
|
|
await deleteItem(client, 'local', folderName)
|
|
|
|
await electronApp.close()
|
|
})
|
|
|
|
it('should test gotoFolderInTerminal function in SSH session', async function () {
|
|
const electronApp = await electron.launch(appOptions)
|
|
const client = await electronApp.firstWindow()
|
|
extendClient(client, electronApp)
|
|
await delay(3500)
|
|
|
|
// Set up SSH connection
|
|
await setupSftpConnection(client)
|
|
|
|
// Create a new folder in local first
|
|
const localFolderName = 'test-local-folder-' + Date.now()
|
|
await createFolder(client, 'local', localFolderName)
|
|
|
|
// Create a new folder in remote
|
|
const remoteFolderName = 'test-ssh-folder-' + Date.now()
|
|
await createFolder(client, 'remote', remoteFolderName)
|
|
|
|
// Verify local folder does not have "Access this folder from terminal" option
|
|
await client.rightClick(`.file-list.local .sftp-item[title="${localFolderName}"]`, 10, 10)
|
|
await delay(500)
|
|
const localContextMenu = await client.locator('.ant-dropdown:not(.ant-dropdown-hidden)')
|
|
const localHasTerminalAccess = await localContextMenu.locator('.ant-dropdown-menu-item:has-text("Access this folder from the terminal")').count()
|
|
expect(localHasTerminalAccess).toBe(0)
|
|
// Close context menu
|
|
await client.click('.session-current .sftp-panel-title')
|
|
await delay(500)
|
|
|
|
// Access remote folder from terminal
|
|
await accessFolderFromTerminal(client, 'remote', remoteFolderName)
|
|
|
|
// Verify terminal has cd command and folder name
|
|
const terminalContent = await getTerminalContent(client)
|
|
expect(terminalContent.includes('cd ')).toBe(true)
|
|
expect(terminalContent.includes(remoteFolderName)).toBe(true)
|
|
|
|
// Clean up - delete both test folders
|
|
await clickSftpTab(client)
|
|
await deleteItem(client, 'local', localFolderName)
|
|
await deleteItem(client, 'remote', remoteFolderName)
|
|
|
|
await electronApp.close()
|
|
})
|
|
|
|
it('should test rename function for folders in context menu for both local and remote', async function () {
|
|
const electronApp = await electron.launch(appOptions)
|
|
const client = await electronApp.firstWindow()
|
|
extendClient(client, electronApp)
|
|
await delay(3500)
|
|
|
|
// Set up SSH connection
|
|
await setupSftpConnection(client)
|
|
|
|
// Test local folder rename
|
|
const localFolderName = 'test-local-rename-folder-' + Date.now()
|
|
await createFolder(client, 'local', localFolderName)
|
|
|
|
const newLocalFolderName = 'renamed-' + localFolderName
|
|
await renameItem(client, 'local', localFolderName, newLocalFolderName)
|
|
|
|
expect(await verifyFileExists(client, 'local', newLocalFolderName)).toBe(true)
|
|
|
|
// Test remote folder rename
|
|
const remoteFolderName = 'test-remote-rename-folder-' + Date.now()
|
|
await createFolder(client, 'remote', remoteFolderName)
|
|
|
|
const newRemoteFolderName = 'renamed-' + remoteFolderName
|
|
await renameItem(client, 'remote', remoteFolderName, newRemoteFolderName)
|
|
|
|
expect(await verifyFileExists(client, 'remote', newRemoteFolderName)).toBe(true)
|
|
|
|
// Clean up - delete the test folders
|
|
await deleteItem(client, 'local', newLocalFolderName)
|
|
await deleteItem(client, 'remote', newRemoteFolderName)
|
|
|
|
await electronApp.close()
|
|
})
|
|
|
|
it('should test enter folder context menu and verify folder content for both remote and local', async function () {
|
|
const electronApp = await electron.launch(appOptions)
|
|
const client = await electronApp.firstWindow()
|
|
extendClient(client, electronApp)
|
|
await delay(3500)
|
|
|
|
// Set up SSH connection
|
|
await setupSftpConnection(client)
|
|
|
|
// Test remote file system
|
|
const remoteFolderName = 'test-remote-enter-folder-' + Date.now()
|
|
await createFolder(client, 'remote', remoteFolderName)
|
|
|
|
// Enter remote folder
|
|
await enterFolder(client, 'remote', remoteFolderName)
|
|
|
|
// Verify remote folder content
|
|
expect(await verifyCurrentPath(client, 'remote', remoteFolderName)).toBe(true)
|
|
expect(await countFileListItems(client, 'remote', '.sftp-item')).toBe(2)
|
|
expect(await countFileListItems(client, 'remote', '.parent-file-item')).toBe(1)
|
|
|
|
// Go back to remote parent directory
|
|
await navigateToParentFolder(client, 'remote')
|
|
expect(await verifyCurrentPath(client, 'remote', remoteFolderName)).toBe(false)
|
|
|
|
// Test local file system
|
|
const localFolderName = 'test-local-enter-folder-' + Date.now()
|
|
await createFolder(client, 'local', localFolderName)
|
|
|
|
// Enter local folder
|
|
await enterFolder(client, 'local', localFolderName)
|
|
|
|
// Verify local folder content
|
|
expect(await verifyCurrentPath(client, 'local', localFolderName)).toBe(true)
|
|
expect(await countFileListItems(client, 'local', '.sftp-item')).toBe(2)
|
|
expect(await countFileListItems(client, 'local', '.parent-file-item')).toBe(1)
|
|
|
|
// Go back to local parent directory
|
|
await navigateToParentFolder(client, 'local')
|
|
expect(await verifyCurrentPath(client, 'local', localFolderName)).toBe(false)
|
|
|
|
// Clean up - delete the test folders
|
|
await deleteItem(client, 'remote', remoteFolderName)
|
|
await deleteItem(client, 'local', localFolderName)
|
|
|
|
await electronApp.close()
|
|
})
|
|
})
|