Download plugins/CoreHome/tests/UI/VersionInfoHeaderMessage_spec.js from Leon4gr45/matomo: direct link, hf CLI and curl.
- Browser
- Download file 6.44 kB
-
https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/CoreHome/tests/UI/VersionInfoHeaderMessage_spec.js
- Command line
-
hf download hf://spaces/Leon4gr45/matomo/plugins/CoreHome/tests/UI/VersionInfoHeaderMessage_spec.js
-
curl -L -o VersionInfoHeaderMessage_spec.js https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/CoreHome/tests/UI/VersionInfoHeaderMessage_spec.js
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'); | |
| }); | |
| }); | |
| }); | |
| }); | |
| }); | |