Skip to content

Commit f182e2c

Browse files
committed
add some more tests
1 parent c4010f0 commit f182e2c

File tree

6 files changed

+77
-6
lines changed

6 files changed

+77
-6
lines changed

e2e/chat.spec.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import { expect, test } from '@playwright/test'
33
test.describe('Chat v2 Conversation tests', () => {
44
test.beforeEach(async ({ page }) => {
55
await page.goto('/v2')
6-
// Press esc to close disclaimer modal if present
7-
await page.keyboard.press('Escape')
6+
await page.locator('#close-disclaimer').click()
87
})
98

109
test('Chat v2 mock response works', async ({ page }) => {
@@ -18,4 +17,22 @@ test.describe('Chat v2 Conversation tests', () => {
1817
await expect(page.getByTestId('user-message')).toContainText('testinen morjens')
1918
await expect(page.getByTestId('assistant-message')).toContainText('You are calling mock endpoint for streaming mock data')
2019
})
20+
21+
test('Can empty conversation', async ({ page }) => {
22+
await page.locator('#model-selector').first().click()
23+
await page.getByRole('option', { name: 'mock' }).click()
24+
25+
const chatInput = page.locator('#chat-input').first()
26+
await chatInput.fill('tää tyhjennetään')
27+
await chatInput.press('Shift+Enter')
28+
29+
await expect(page.getByTestId('user-message')).toContainText('tää tyhjennetään')
30+
await expect(page.getByTestId('assistant-message')).toContainText('OVER', { timeout: 5000 })
31+
32+
page.on('dialog', (dialog) => dialog.accept())
33+
await page.locator('#empty-conversation-button').click()
34+
35+
await expect(page.getByTestId('user-message')).not.toBeVisible()
36+
await expect(page.getByTestId('assistant-message')).not.toBeVisible()
37+
})
2138
})

e2e/chatUiFeatures.spec.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { expect, test } from '@playwright/test'
2+
3+
test.describe('Chat v2 UI Features Tests', () => {
4+
test.beforeEach(async ({ page }) => {
5+
await page.goto('/v2')
6+
})
7+
8+
test('Disclaimer is visible', async ({ page }) => {
9+
await expect(page.locator('#close-disclaimer')).toBeVisible()
10+
})
11+
12+
test('Disclaimer can be opened manually', async ({ page }) => {
13+
await page.locator('#close-disclaimer').click()
14+
await page.locator('#help-button').click()
15+
await expect(page.locator('#close-disclaimer')).toBeVisible()
16+
})
17+
18+
test('Settings can be opened and closed', async ({ page }) => {
19+
await page.locator('#close-disclaimer').click()
20+
await page.locator('#settings-button').click()
21+
await expect(page.locator('#close-settings')).toBeVisible()
22+
23+
await page.keyboard.press('Escape')
24+
await expect(page.locator('#close-settings')).not.toBeVisible()
25+
})
26+
})

e2e/utils/logging.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import type { Page } from '@playwright/test'
2+
3+
export async function setupLogging(page: Page) {
4+
page.on('requestfailed', (request) => {
5+
console.log('Request failed: ' + request.url() + ' ' + request.failure()?.errorText)
6+
})
7+
8+
page.on('request', (request) => {
9+
console.log('Request: ' + request.url())
10+
})
11+
12+
page.on('response', (response) => {
13+
console.log('Request finished: ' + response.url() + ' ' + response.status())
14+
})
15+
16+
page.on('console', (msg) => {
17+
console.log(`Console message: ${msg.text()}`)
18+
})
19+
20+
page.on('crash', () => {
21+
console.log('Page crashed')
22+
})
23+
24+
page.on('pageerror', (error) => {
25+
console.log('Page error: ' + error.message)
26+
})
27+
}

src/client/components/ChatV2/ChatV2.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ export const ChatV2 = () => {
431431
{course && <ChatInfo course={course} />}
432432

433433
<Box sx={{ display: 'flex', flexDirection: 'column', gap: '0.6rem', mb: '2rem' }}>
434-
<OutlineButtonBlack startIcon={<DeleteIcon />} onClick={handleReset}>
434+
<OutlineButtonBlack startIcon={<DeleteIcon />} onClick={handleReset} id="empty-conversation-button">
435435
{t('chat:emptyConversation')}
436436
</OutlineButtonBlack>
437437
<Tooltip
@@ -447,10 +447,10 @@ export const ChatV2 = () => {
447447
{t('email:save')}
448448
</OutlineButtonBlack>
449449
</Tooltip>
450-
<OutlineButtonBlack startIcon={<SettingsIcon />} onClick={() => setSettingsModalOpen(true)}>
450+
<OutlineButtonBlack startIcon={<SettingsIcon />} onClick={() => setSettingsModalOpen(true)} id="settings-button">
451451
{t('chat:settings')}
452452
</OutlineButtonBlack>
453-
<OutlineButtonBlack startIcon={<HelpIcon />} onClick={() => setDisclaimerStatus({ open: true })}>
453+
<OutlineButtonBlack startIcon={<HelpIcon />} onClick={() => setDisclaimerStatus({ open: true })} id="help-button">
454454
{t('info:title')}
455455
</OutlineButtonBlack>
456456
</Box>

src/client/components/ChatV2/SettingsModal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ export const SettingsModal: React.FC<SettingsModalProps> = ({
139139
overflow: 'hidden',
140140
}}
141141
>
142-
<IconButton onClick={() => setOpen(false)} sx={{ position: 'absolute', top: 10, right: 20, color: 'grey.500' }}>
142+
<IconButton onClick={() => setOpen(false)} sx={{ position: 'absolute', top: 10, right: 20, color: 'grey.500' }} id="close-settings">
143143
<Close />
144144
</IconButton>
145145

src/server/util/azure/mocks/mockFunctions.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ export const getBasicStreamMock = (): MockResponseStreamEvent[] => {
4646
- To mock a file search fail response, write: **rag fail**
4747
- To mock a code block, write: **code block**
4848
- To mock a math block, write: **math block**
49+
OVER
4950
`
5051

5152
const chunkedResponseText = chunkText(responseText)

0 commit comments

Comments
 (0)