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