matomo / plugins /CoreHome /tests /UI /VersionInfoHeaderMessage_spec.js
Leon4gr45's picture
Upload folder using huggingface_hub (part 12)
5d53000 verified
Raw History Blame Contribute Delete
6.44 kB
/*!
* Matomo - free/libre analytics platform
*
* Dashboard screenshot tests.
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
describe('VersionInfoHeaderMessage', function() {
const parentSuite = this;
this.fixture = "Piwik\\Tests\\Fixtures\\OneVisit";
const selectorComponent = 'div[vue-entry="CoreHome.VersionInfoHeaderMessage"]';
const selectorMessage = '#header_message';
const selectorMessageTitle = '#header_message .title';
const selectorMessageDropdown = '#header_message .dropdown';
const selectorUpdateLink = '#updateCheckLinkContainer';
const selectorUpdateButtonIcon = '#header_message .title .icon-reload';
const urlAdminHome = '?idSite=1&period=year&date=2012-08-09&module=CoreAdminHome&action=home';
const urlHome = '?idSite=1&period=year&date=2012-08-09&module=CoreHome&action=index';
const getMessageTitleText = async function() {
const messageTitle = await page.$(selectorMessageTitle);
const titleText = await messageTitle.getProperty('textContent');
return await titleText.jsonValue();
};
const afterAsRegularUser = function() {
delete testEnvironment.idSitesAdminAccess;
testEnvironment.save();
};
const beforeAsRegularUser = function() {
testEnvironment.idSitesAdminAccess = [1];
testEnvironment.save();
};
const getUpdateLinkText = async function() {
const updateLink = await page.$(selectorUpdateLink);
const linkText = await updateLink.getProperty('textContent');
return await linkText.jsonValue();
};
const makeUpdateAvailable = function() {
testEnvironment.optionsOverride['UpdateCheck_LatestVersion'] = '99.99.99';
testEnvironment.optionsOverride['UpdateCheck_LastCheckFailed'] = false;
testEnvironment.save();
};
const makeUpdateFail = function() {
testEnvironment.optionsOverride['UpdateCheck_LatestVersion'] = '';
testEnvironment.optionsOverride['UpdateCheck_LastCheckFailed'] = true;
testEnvironment.save();
};
beforeEach(() => {
// otherwise #header_message.title will be hidden
testEnvironment.useOverrideCss = false;
testEnvironment.optionsOverride = {
UpdateCheck_LastCheckFailed: false,
UpdateCheck_LastTimeChecked: 2147468400,
UpdateCheck_LatestVersion: '',
};
testEnvironment.save();
});
describe('CoreHome', function() {
it('should not render without update', async function() {
await page.goto(urlHome);
await page.waitForNetworkIdle();
expect(await page.$(selectorComponent)).to.be.null;
expect(await page.$(selectorMessage)).to.be.null;
});
it('should display an available update', async function() {
makeUpdateAvailable();
await page.goto(urlHome);
await page.waitForNetworkIdle();
expect(await getMessageTitleText()).to.match(/New Update: Matomo 99.99.99/);
});
});
describe('CoreAdminHome', function() {
describe('without superuser permissions', function() {
before(beforeAsRegularUser);
after(afterAsRegularUser);
it('should not render', async function() {
await page.goto(urlAdminHome);
await page.waitForNetworkIdle();
expect(await page.$(selectorComponent)).to.be.null;
expect(await page.$(selectorMessage)).to.be.null;
});
});
describe('with superuser permissions', function() {
it('should always render', async function() {
await page.goto(urlAdminHome);
await page.waitForNetworkIdle();
expect(await getUpdateLinkText()).to.match(/Check for updates/);
});
it('should tell if no new version is available', async function() {
await page.click(selectorUpdateLink);
await page.waitForNetworkIdle();
expect(await getMessageTitleText()).to.match(/latest version of Matomo/);
});
it('should check for a new version when clicking the full title anchor', async function() {
await page.goto(urlAdminHome);
await page.waitForNetworkIdle();
expect(await getUpdateLinkText()).to.match(/Check for updates/);
await page.click(selectorMessageTitle);
await page.waitForNetworkIdle();
expect(await getMessageTitleText()).to.match(/latest version of Matomo/);
});
it('should check for a new version when clicking the icon inside the title anchor', async function() {
await page.goto(urlAdminHome);
await page.waitForNetworkIdle();
expect(await getUpdateLinkText()).to.match(/Check for updates/);
await page.click(selectorUpdateButtonIcon);
await page.waitForNetworkIdle();
expect(await getMessageTitleText()).to.match(/latest version of Matomo/);
});
it('should check for a new version on request', async function() {
await page.goto(urlAdminHome);
await page.waitForNetworkIdle();
expect(await getUpdateLinkText()).to.match(/Check for updates/);
makeUpdateFail();
await page.click(selectorUpdateLink);
await page.waitForNetworkIdle();
expect(await getUpdateLinkText()).to.match(/Please try again/);
makeUpdateAvailable();
await page.click(selectorUpdateLink);
await page.waitForNetworkIdle();
expect(await getMessageTitleText()).to.match(/New Update: Matomo 99.99.99/);
});
describe('rendering', function() {
this.title = parentSuite.title; // to make sure the screenshot prefix is the same
it('looks great', async function() {
await page.evaluate(function(selectorComponent, selectorMessageDropdown) {
const component = document.querySelector(selectorComponent);
const messageDropdown = document.querySelector(selectorMessageDropdown);
const matomoVersion = JSON.parse(component.getAttribute('piwik-version'));
messageDropdown.innerHTML = messageDropdown.innerHTML.replace(matomoVersion, '5.x-uitest');
}, selectorComponent, selectorMessageDropdown);
await page.mouse.move(-10, -10);
await page.hover(selectorMessage);
await page.waitForSelector(selectorMessageDropdown, {visible: true, timeout: 250});
expect(
await page.screenshotSelector(`${selectorMessage}, ${selectorMessageDropdown}`)
).to.matchImage('update_available');
});
});
});
});
});