42 خطوط
2.8 KiB
TypeScript
42 خطوط
2.8 KiB
TypeScript
import { expect, test } from '@playwright/test'
|
||
|
||
const learner = {
|
||
id: 'learner-1', name: 'سارا احمدی', email: 'sara.ahmadi@company.com', role: 'learner', status: 'active', locale: 'fa', timezone: 'Asia/Tehran', permissions: [],
|
||
organization: { id: 'org-1', name: 'MicroLearn', slug: 'microlearn', defaultLocale: 'fa', timezone: 'Asia/Tehran' },
|
||
deployment: { mode: 'saas', supportsMultipleOrganizations: true, exposesSubscriptionManagement: true },
|
||
}
|
||
|
||
test('learner More is responsive and its personalization controls work', async ({ page }) => {
|
||
await page.setViewportSize({ width: 375, height: 812 })
|
||
await page.route('**/api/v1/**', route => {
|
||
const pathname = new URL(route.request().url()).pathname
|
||
const data = pathname.endsWith('/auth/me') ? learner : pathname.endsWith('/learner/home') ? {
|
||
continueLearning: null,
|
||
assigned: [],
|
||
dueSoon: [],
|
||
summary: { total: 0, completed: 0, inProgress: 0, averageProgress: 0 },
|
||
} : {}
|
||
return route.fulfill({ contentType: 'application/json', body: JSON.stringify({ data }) })
|
||
})
|
||
await page.addInitScript(() => localStorage.setItem('microlearn.access_token', 'e2e-token'))
|
||
await page.goto('http://127.0.0.1:5173/learn/more')
|
||
|
||
await expect(page.getByRole('heading', { name: 'بیشتر', level: 1 })).toBeVisible()
|
||
await expect(page.getByRole('heading', { name: 'شخصیسازی تجربه من' })).toBeVisible()
|
||
await expect(page.getByText('سارا احمدی')).toBeVisible()
|
||
await expect(page.getByRole('button', { name: 'خروج از حساب کاربری' })).toBeVisible()
|
||
expect(await page.evaluate(() => document.documentElement.scrollWidth <= document.documentElement.clientWidth)).toBe(true)
|
||
if (process.env.TEMP) await page.screenshot({ path: `${process.env.TEMP}\\microlearn-more-page.png`, fullPage: true })
|
||
|
||
await page.getByRole('button', { name: /اندازه متن/ }).click()
|
||
await expect(page.getByRole('button', { name: /اندازه متن: بزرگ/ })).toBeVisible()
|
||
await page.getByRole('button', { name: /ترجیحات یادگیری/ }).first().click()
|
||
await expect(page.getByRole('dialog', { name: 'ترجیحات یادگیری' })).toBeVisible()
|
||
await page.getByRole('button', { name: '۱۵ دقیقه' }).click()
|
||
expect(await page.evaluate(() => JSON.parse(localStorage.getItem('microlearn.learner-preferences') ?? '{}').state.dailyDuration)).toBe(15)
|
||
if (process.env.TEMP) await page.screenshot({ path: `${process.env.TEMP}\\microlearn-more-modal.png`, fullPage: true })
|
||
await page.getByRole('dialog', { name: 'ترجیحات یادگیری' }).getByRole('button', { name: 'بستن' }).click()
|
||
await page.setViewportSize({ width: 320, height: 700 })
|
||
expect(await page.evaluate(() => document.documentElement.scrollWidth <= document.documentElement.clientWidth)).toBe(true)
|
||
})
|