serverIdentity.spec.ts 2.4 KB

12345678910111213141516171819202122232425
  1. import {expect,test,type Page} from '@playwright/test'
  2. async function login(page:Page){await page.goto('/conversations');await page.getByRole('textbox',{name:'账号',exact:true}).fill('fixture');await page.getByRole('textbox',{name:'密码',exact:true}).fill('fixture-pass');await page.getByRole('button',{name:'登录',exact:true}).click();await expect(page.getByRole('button',{name:'设置与模式'}).first()).toBeVisible()}
  3. async function settings(page:Page){await page.getByRole('button',{name:'设置与模式'}).first().click();await page.getByRole('menuitem',{name:'进入设置',exact:true}).click();await expect(page.locator('input[name=server-display-name]')).toBeVisible();await expect(page.locator('.settings-center-layer')).toHaveCSS('opacity','1')}
  4. test('shares a server name across two clients without reloading',async({page,browser},testInfo)=>{
  5. await login(page);await settings(page)
  6. const observerContext=await browser.newContext({baseURL:'http://127.0.0.1:18804',viewport:{width:1100,height:850}})
  7. const observer=await observerContext.newPage();await login(observer);await settings(observer)
  8. if(await page.locator('input[name=server-display-name]').inputValue()==='Web 服务器') {
  9. await page.locator('input[name=server-display-name]').fill('临时同步验证')
  10. await page.getByRole('button',{name:'保存服务器名称',exact:true}).click()
  11. await expect(observer.locator('input[name=server-display-name]')).toHaveValue('临时同步验证')
  12. }
  13. await page.locator('input[name=server-display-name]').fill('Web 服务器')
  14. await page.getByRole('button',{name:'保存服务器名称',exact:true}).click()
  15. await expect(page.getByRole('status').filter({hasText:'服务器名称已保存'})).toBeVisible()
  16. await expect(observer.locator('input[name=server-display-name]')).toHaveValue('Web 服务器')
  17. await page.screenshot({path:testInfo.outputPath('web-server-name.png'),fullPage:true,animations:'disabled'})
  18. await observerContext.close()
  19. })
  20. test('reads the name saved by Android back through the Web settings',async({page},testInfo)=>{
  21. test.skip(process.env.SERVER_NAME_NATIVE_ROUNDTRIP!=='1','Run after the iOS and Android settings tests')
  22. await login(page);await settings(page)
  23. await expect(page.locator('input[name=server-display-name]')).toHaveValue('家里的 Mac')
  24. await page.screenshot({path:testInfo.outputPath('web-native-name-roundtrip.png'),fullPage:true,animations:'disabled'})
  25. })