import { mockI18nSuccess } from '../support/mock/handlers/i18n'; import { mockGetSoftwareInfoSuccess } from '../support/mock/handlers/system'; import { mockLoginSuccess } from '../support/mock/handlers/user'; import { mockCheckVersionHasUpdate, mockCheckVersionNoUpdate, mockDownloadPackage, mockInstallPackage } from '../support/mock/handlers/versionUpdate'; import LoginPage from '../support/pageObjects/LoginPage'; describe('Version Update', () => { const loginPage = new LoginPage(); beforeEach(() => { // Mock software_info API to prevent 404 errors mockGetSoftwareInfoSuccess(); // Mock i18n translation file mockI18nSuccess('zh_CN'); mockLoginSuccess(); }); it('should check for updates after login', () => { mockCheckVersionHasUpdate(); // 登录流程 loginPage.visit(); loginPage.login('admin', '123456'); cy.wait('@loginSuccess'); // 等待版本检查完成 cy.wait('@checkVersionHasUpdate'); // 验证版本更新弹窗出现 loginPage.getVersionUpdateModal().should('be.visible'); }); it('should start download when user clicks update now', () => { mockCheckVersionHasUpdate(); mockDownloadPackage(); // 登录并等待版本检查 loginPage.visit(); loginPage.login('admin', '123456'); cy.wait('@loginSuccess'); cy.wait('@checkVersionHasUpdate'); // 点击立即更新 loginPage.getUpdateNowButton().click(); // 验证下载弹窗出现 loginPage.getDownloadProgressModal().should('be.visible'); // 验证API调用 cy.wait('@downloadPackage'); }); it('should skip version when user chooses to skip', () => { mockCheckVersionHasUpdate(); loginPage.visit(); loginPage.login('admin', '123456'); cy.wait('@loginSuccess'); cy.wait('@checkVersionHasUpdate'); // 点击跳过版本 loginPage.getSkipVersionButton().click(); // 检查 Modal 是否不可见 loginPage.getVersionUpdateModal().should('not.be.visible'); }); it('should not show update modal when no new version available', () => { mockCheckVersionNoUpdate(); loginPage.visit(); loginPage.login('admin', '123456'); cy.wait('@loginSuccess'); cy.wait('@checkVersionNoUpdate'); // 验证没有版本更新弹窗 // 检查 Modal 是否不可见 loginPage.getVersionUpdateModal().should('not.be.visible'); }); });