Files
2024-10-25 14:16:28 +02:00

138 lines
4.6 KiB
JavaScript

require('module-alias/register');
require('@root/globals.js');
const {expect} = require('chai');
const helper = require('prestashop_test_lib/kernel/utils/helpers');
// Get resolver
const VersionSelectResolver = require('prestashop_test_lib/kernel/resolvers/versionSelectResolver');
const configClassMap = require('@root/configClassMap.js');
const versionSelectResolver = new VersionSelectResolver(global.PS_RESOLVER_VERSION.FROM, configClassMap);
const newVersionSelectResolver = new VersionSelectResolver(global.PS_RESOLVER_VERSION.TO, configClassMap);
// Import pages
const loginPage = versionSelectResolver.require('BO/login/index.js');
const dashboardPage = versionSelectResolver.require('BO/dashboard/index.js');
const moduleManagerPage = versionSelectResolver.require('BO/modules/moduleManager/index.js');
const upgradeModulePage = versionSelectResolver.require('BO/modules/autoupgrade/index.js');
const newLoginPage = newVersionSelectResolver.require('BO/login/index.js');
// Browser vars
let browserContext;
let page;
let failedStepNumber = 1;
const moduleData = {
name: '1-Click Upgrade',
tag: 'autoupgrade',
downloadFolder: 'modules/autoupgrade/download',
};
/*
Go to login page
Check PS version
Upgrade
Log out
Check new version
*/
// eslint-disable-next-line max-len
describe(`[${global.AUTOUPGRADE_VERSION}] Upgrade PrestaShop from '${global.PS_VERSION}' to '${global.PS_VERSION_UPGRADE_TO}'`, async () => {
// before and after functions
before(async function () {
browserContext = await helper.createBrowserContext(this.browser);
page = await helper.newTab(browserContext);
});
after(async () => {
await helper.closeBrowserContext(browserContext);
});
afterEach(async function () {
if (this.currentTest.state === 'failed') {
await page.screenshot({path: `./screenshots/failed-step-${failedStepNumber}.png`, fullPage: true});
failedStepNumber += 1;
}
});
it('should go to login page', async () => {
await loginPage.goTo(page, global.BO.URL);
const pageTitle = await loginPage.getPageTitle(page);
await expect(pageTitle).to.contains(loginPage.pageTitle);
});
it('should check PS version', async () => {
const psVersion = await loginPage.getPrestashopVersion(page);
await expect(psVersion).to.contains(global.PS_VERSION);
});
it('should login into BO with default user', async () => {
await loginPage.login(page, global.BO.EMAIL, global.BO.PASSWD);
await dashboardPage.closeOnboardingModal(page);
const pageTitle = await dashboardPage.getPageTitle(page);
await expect(pageTitle).to.contains(dashboardPage.pageTitle);
});
it('should go to modules manager page', async () => {
await dashboardPage.goToSubMenu(
page,
dashboardPage.modulesParentLink,
dashboardPage.moduleManagerLink,
);
const pageTitle = await moduleManagerPage.getPageTitle(page);
await expect(pageTitle).to.contains(moduleManagerPage.pageTitle);
});
it('should go to module configuration page', async () => {
await moduleManagerPage.searchModule(page, moduleData.tag, moduleData.name);
await moduleManagerPage.goToConfigurationPage(page, moduleData.name);
const pageTitle = await upgradeModulePage.getPageTitle(page);
await expect(pageTitle).to.contains(upgradeModulePage.pageTitle);
});
it('should fill \'Expert mode\' form', async () => {
const textResult = await upgradeModulePage.fillExpertModeForm(
page,
'Local archive',
global.ZIP_NAME,
global.PS_VERSION_UPGRADE_TO,
);
await expect(textResult).to.contain(upgradeModulePage.configResultValidationMessage);
});
it('should put the shop under maintenance and check if the checklist is all green', async () => {
await upgradeModulePage.putShopUnderMaintenance(page);
for (let i = 1; i <= 10; i++) {
const textResult = await upgradeModulePage.getRowImageContent(page, i);
await expect(textResult).to.equal('ok');
}
});
it('should click on \'UPGRADE PRESTASHOP NOW\' and wait for the upgrade', async () => {
const testResult = await upgradeModulePage.upgradePrestaShopNow(page);
await expect(testResult).to.equal(upgradeModulePage.upgradeValidationMessage);
});
it('should log out from BO', async () => {
await upgradeModulePage.logoutBO(page);
await newLoginPage.reloadPage(page);
const pageTitle = await newLoginPage.getPageTitle(page);
await expect(pageTitle).to.contains(newLoginPage.pageTitle);
});
it('should check PS version', async () => {
const psVersion = await newLoginPage.getPrestashopVersion(page);
await expect(psVersion).to.contains(global.PS_VERSION_UPGRADE_TO);
});
});