83 lines
2.6 KiB
JavaScript
83 lines
2.6 KiB
JavaScript
const { _electron: electron } = require('@playwright/test')
|
|
const { test: it, expect } = require('@playwright/test')
|
|
const { describe } = it
|
|
const delay = require('./common/wait')
|
|
const appOptions = require('./common/app-options')
|
|
const extendClient = require('./common/client-extend')
|
|
const { spawn } = require('child_process')
|
|
const path = require('path')
|
|
|
|
describe('AI Config and Suggestions', function () {
|
|
let aiServer
|
|
let electronApp
|
|
let client
|
|
|
|
// Start AI API server before all tests
|
|
it.beforeAll(async () => {
|
|
const serverPath = path.join(__dirname, 'common', 'ai-api.js')
|
|
aiServer = spawn('node', [serverPath])
|
|
await new Promise(resolve => setTimeout(resolve, 1000)) // Wait for server to start
|
|
})
|
|
|
|
// Stop AI API server after all tests
|
|
it.afterAll(() => {
|
|
if (aiServer) {
|
|
aiServer.kill()
|
|
}
|
|
})
|
|
|
|
it.beforeEach(async () => {
|
|
electronApp = await electron.launch(appOptions)
|
|
client = await electronApp.firstWindow()
|
|
extendClient(client, electronApp)
|
|
await delay(4500)
|
|
})
|
|
|
|
it.afterEach(async () => {
|
|
await electronApp.close()
|
|
})
|
|
|
|
it('should verify AI functionality after configuration', async function () {
|
|
// Open AI chat
|
|
await client.click('.terminal-footer-ai .ai-icon')
|
|
await delay(1000)
|
|
|
|
// Verify AI chat is open
|
|
await expect(client.locator('.ai-chat-container')).toBeVisible()
|
|
|
|
// Get initial chat history count
|
|
const initialHistoryCount = await client.locator('.chat-history-item').count()
|
|
|
|
// Enter a test prompt
|
|
const testPrompt = 'Hello, AI assistant! Please provide a long response.'
|
|
await client.fill('.ai-chat-textarea', testPrompt)
|
|
|
|
// Submit the prompt
|
|
await client.click('.ai-chat-terminals .anticon-send')
|
|
|
|
// Wait for response (adjust delay if needed)
|
|
await delay(5000)
|
|
|
|
// Get new chat history count
|
|
const newHistoryCount = await client.locator('.chat-history-item').count()
|
|
|
|
// Verify chat history increased by 1
|
|
expect(newHistoryCount).toBe(initialHistoryCount + 1)
|
|
|
|
// Verify the last chat history item contains the test prompt
|
|
const lastChatItem = await client.locator('.chat-history-item').last()
|
|
const promptContent = await lastChatItem.locator('.ant-alert-title').textContent()
|
|
expect(promptContent).toContain(testPrompt)
|
|
|
|
// Test clear history functionality
|
|
await client.click('.ai-chat-terminals .clear-ai-icon')
|
|
await delay(500)
|
|
await client.click('.ant-popover .ant-btn-primary')
|
|
await delay(1000)
|
|
|
|
// Verify that the chat history is now empty
|
|
const finalHistoryCount = await client.locator('.chat-history-item').count()
|
|
expect(finalHistoryCount).toBe(0)
|
|
})
|
|
})
|