Files
electerm--electerm/test/e2e/02.04.profile-use.spec.js
2026-07-13 12:46:20 +08:00

105 lines
3.3 KiB
JavaScript

/**
* ssh profile login test
*/
const { _electron: electron } = require('@playwright/test')
const {
test: it
} = require('@playwright/test')
const { describe } = it
it.setTimeout(100000)
const { expect } = require('./common/expect')
const delay = require('./common/wait')
const log = require('./common/log')
const {
TEST_PASS,
TEST_USER
} = require('./common/env')
const uid = require('./common/uid')
const appOptions = require('./common/app-options')
const extendClient = require('./common/client-extend')
const {
closeApp,
setupSshConnection
} = require('./common/common')
const { basicTerminalTest } = require('./common/basic-terminal-test')
describe('ssh profile login', function () {
it('should create profile and login using it', async function () {
const electronApp = await electron.launch(appOptions)
const client = await electronApp.firstWindow()
extendClient(client, electronApp)
await delay(3500)
// First create an SSH connection to get proper tab data
await setupSshConnection(client, {
waitAfterConnect: 5500
})
log('0104.profile-use.spec.js: ssh form submitted')
log('0104.profile-use.spec.js: ssh connected')
// Get the SSH tab data
const sshTab = await client.evaluate(() => {
return window.store.tabs[window.store.tabs.length - 1]
})
log('0104.profile-use.spec.js: ssh tab data retrieved')
// Create profile
await client.click('.btns .anticon-setting')
log('0104.profile-use.spec.js: setting opened')
await delay(2500)
await client.click('.setting-tabs [role="tab"]', 4)
log('0104.profile-use.spec.js: profiles tab clicked')
await delay(500)
const profileName = 'Test-Profile-' + uid()
await client.setValue('.setting-tabs-profile input#name', profileName)
log('0104.profile-use.spec.js: profile name set')
await client.setValue('.setting-tabs-profile input#password', TEST_PASS)
await client.setValue('.setting-tabs-profile input#username', TEST_USER)
await delay(150)
const profileCountPrev = await client.evaluate(() => {
return window.store.profiles.length
})
await client.click('.setting-tabs-profile .ant-btn-primary')
log('0104.profile-use.spec.js: profile save clicked')
await delay(2550)
// Verify profile was created
const profileCount = await client.evaluate(() => {
return window.store.profiles.length
})
expect(profileCount).equal(profileCountPrev + 1)
log('0104.profile-use.spec.js: profile created')
// Get profile ID and create tab with it
await client.evaluate((data) => {
window.store.showModal = 0
})
await client.evaluate((data) => {
const profile = window.store.profiles.find(p => p.name === data.name)
const nt = {
...data.tab,
id: 'sdfdsf',
pid: '',
profile: profile.id
}
nt.authType = 'profiles'
delete nt.password
window.store.addTab(nt)
}, {
name: profileName,
tab: sshTab
})
log('0104.profile-use.spec.js: tab with profile added')
await delay(5500)
// Verify connection works
await basicTerminalTest(client, 'ls')
log('0104.profile-use.spec.js: basic terminal test done')
await closeApp(electronApp, __filename)
log('0104.profile-use.spec.js: app closed')
})
})