versionUpdate.cy.ts 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import { mockI18nSuccess } from '../support/mock/handlers/i18n';
  2. import { mockGetSoftwareInfoSuccess } from '../support/mock/handlers/system';
  3. import { mockLoginSuccess } from '../support/mock/handlers/user';
  4. import {
  5. mockCheckVersionHasUpdate,
  6. mockCheckVersionNoUpdate,
  7. mockDownloadPackage,
  8. mockInstallPackage
  9. } from '../support/mock/handlers/versionUpdate';
  10. import LoginPage from '../support/pageObjects/LoginPage';
  11. describe('Version Update', () => {
  12. const loginPage = new LoginPage();
  13. beforeEach(() => {
  14. // Mock software_info API to prevent 404 errors
  15. mockGetSoftwareInfoSuccess();
  16. // Mock i18n translation file
  17. mockI18nSuccess('zh_CN');
  18. mockLoginSuccess();
  19. });
  20. it('should check for updates after login', () => {
  21. mockCheckVersionHasUpdate();
  22. // 登录流程
  23. loginPage.visit();
  24. loginPage.login('admin', '123456');
  25. cy.wait('@loginSuccess');
  26. // 等待版本检查完成
  27. cy.wait('@checkVersionHasUpdate');
  28. // 验证版本更新弹窗出现
  29. loginPage.getVersionUpdateModal().should('be.visible');
  30. });
  31. it('should start download when user clicks update now', () => {
  32. mockCheckVersionHasUpdate();
  33. mockDownloadPackage();
  34. // 登录并等待版本检查
  35. loginPage.visit();
  36. loginPage.login('admin', '123456');
  37. cy.wait('@loginSuccess');
  38. cy.wait('@checkVersionHasUpdate');
  39. // 点击立即更新
  40. loginPage.getUpdateNowButton().click();
  41. // 验证下载弹窗出现
  42. loginPage.getDownloadProgressModal().should('be.visible');
  43. // 验证API调用
  44. cy.wait('@downloadPackage');
  45. });
  46. it('should skip version when user chooses to skip', () => {
  47. mockCheckVersionHasUpdate();
  48. loginPage.visit();
  49. loginPage.login('admin', '123456');
  50. cy.wait('@loginSuccess');
  51. cy.wait('@checkVersionHasUpdate');
  52. // 点击跳过版本
  53. loginPage.getSkipVersionButton().click();
  54. // 检查 Modal 是否不可见
  55. loginPage.getVersionUpdateModal().should('not.be.visible');
  56. });
  57. it('should not show update modal when no new version available', () => {
  58. mockCheckVersionNoUpdate();
  59. loginPage.visit();
  60. loginPage.login('admin', '123456');
  61. cy.wait('@loginSuccess');
  62. cy.wait('@checkVersionNoUpdate');
  63. // 验证没有版本更新弹窗
  64. // 检查 Modal 是否不可见
  65. loginPage.getVersionUpdateModal().should('not.be.visible');
  66. });
  67. });