Browse Source
Faster theming tests, better colours comparison and properly follow admin theming changes
Faster theming tests, better colours comparison and properly follow admin theming changes
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>pull/35525/head
No known key found for this signature in database
GPG Key ID: 60C25B8C072916CF
15 changed files with 257 additions and 108 deletions
-
5apps/theming/appinfo/routes.php
-
21apps/theming/lib/Controller/ThemingController.php
-
1apps/theming/lib/Controller/UserThemeController.php
-
2apps/theming/lib/Service/BackgroundService.php
-
12apps/theming/lib/ThemingDefaults.php
-
6apps/theming/src/AdminTheming.vue
-
6apps/theming/src/components/admin/FileInputField.vue
-
170cypress/e2e/theming/admin-settings.cy.ts
-
75cypress/e2e/theming/themingUtils.ts
-
10cypress/e2e/theming/user-background.cy.ts
-
33cypress/support/commands.ts
-
4dist/theming-admin-theming.js
-
2dist/theming-admin-theming.js.map
-
17package-lock.json
-
1package.json
@ -0,0 +1,75 @@ |
|||||
|
/** |
||||
|
* @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com> |
||||
|
* |
||||
|
* @author John Molakvoæ <skjnldsv@protonmail.com> |
||||
|
* |
||||
|
* @license AGPL-3.0-or-later |
||||
|
* |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU Affero General Public License as |
||||
|
* published by the Free Software Foundation, either version 3 of the |
||||
|
* License, or (at your option) any later version. |
||||
|
* |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU Affero General Public License for more details. |
||||
|
* |
||||
|
* You should have received a copy of the GNU Affero General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
|
* |
||||
|
*/ |
||||
|
import { colord } from 'colord' |
||||
|
|
||||
|
/** |
||||
|
* Validate the current page body css variables |
||||
|
* |
||||
|
* @param {string} expectedColor the expected color |
||||
|
* @param {string} expectedBackground the expected background |
||||
|
*/ |
||||
|
export const validateBodyThemingCss = function(expectedColor = '#0082c9', expectedBackground = 'kamil-porembinski-clouds.jpg') { |
||||
|
return cy.window().then((win) => { |
||||
|
const guestBackgroundColor = getComputedStyle(win.document.body).backgroundColor |
||||
|
const guestBackgroundImage = getComputedStyle(win.document.body).backgroundImage |
||||
|
return colord(guestBackgroundColor).isEqual(expectedColor) |
||||
|
&& guestBackgroundImage.includes(expectedBackground) |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Validate the user theming default select option css |
||||
|
* |
||||
|
* @param {string} expectedColor the expected color |
||||
|
* @param {string} expectedBackground the expected background |
||||
|
*/ |
||||
|
export const validateUserThemingDefaultCss = function(expectedColor = '#0082c9', expectedBackground = 'kamil-porembinski-clouds.jpg') { |
||||
|
return cy.window().then((win) => { |
||||
|
const defaultSelectButton = win.document.querySelector('[data-user-theming-background-default]') |
||||
|
const customColorSelectButton = win.document.querySelector('[data-user-theming-background-color]') |
||||
|
if (!defaultSelectButton || !customColorSelectButton) { |
||||
|
return false |
||||
|
} |
||||
|
|
||||
|
const defaultOptionBackground = getComputedStyle(defaultSelectButton).backgroundImage |
||||
|
const defaultOptionBorderColor = getComputedStyle(defaultSelectButton).borderColor |
||||
|
const colorPickerOptionColor = getComputedStyle(customColorSelectButton).backgroundColor |
||||
|
return defaultOptionBackground.includes(expectedBackground) |
||||
|
&& colord(defaultOptionBorderColor).isEqual(expectedColor) |
||||
|
&& colord(colorPickerOptionColor).isEqual(expectedColor) |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
export const pickRandomColor = function(pickerSelector: string): Cypress.Chainable<string> { |
||||
|
// Pick one of the first 8 options
|
||||
|
const randColour = Math.floor(Math.random() * 8) |
||||
|
|
||||
|
// Open picker
|
||||
|
cy.get(pickerSelector).click() |
||||
|
|
||||
|
// Return selected colour
|
||||
|
return cy.get(pickerSelector).get(`.color-picker__simple-color-circle`).eq(randColour) |
||||
|
.click().then(colorElement => { |
||||
|
const selectedColor = colorElement.css('background-color') |
||||
|
return selectedColor |
||||
|
}) |
||||
|
} |
||||
4
dist/theming-admin-theming.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2
dist/theming-admin-theming.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Write
Preview
Loading…
Cancel
Save
Reference in new issue