From c70e978e937b17f0130ace1a74e631c3d783fa1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Barboza=20de=20S=C3=A1?= Date: Thu, 21 Nov 2024 08:32:09 -0300 Subject: [PATCH 1/2] test: Avoid tests on CI (flaky) due to zoom bug (#21722) * test: remove unused files * test: flag flaky tests due to zoom bug --- .../playwright/layouts/layouts.spec.js | 3 +- .../playwright/parameters/parameters.spec.js | 3 +- .../playwright/whiteboard/draw.js | 40 ------------------ .../playwright/whiteboard/whiteboard.spec.js | 9 ++-- .../moderator-rect-ci-Chromium-linux.png | Bin 77318 -> 0 bytes 5 files changed, 10 insertions(+), 45 deletions(-) delete mode 100644 bigbluebutton-tests/playwright/whiteboard/draw.js delete mode 100644 bigbluebutton-tests/playwright/whiteboard/whiteboard.spec.js-snapshots/moderator-rect-ci-Chromium-linux.png diff --git a/bigbluebutton-tests/playwright/layouts/layouts.spec.js b/bigbluebutton-tests/playwright/layouts/layouts.spec.js index 945f5a708447..c6075dd8c55a 100644 --- a/bigbluebutton-tests/playwright/layouts/layouts.spec.js +++ b/bigbluebutton-tests/playwright/layouts/layouts.spec.js @@ -33,7 +33,8 @@ test.describe('Layout', { tag: '@ci' }, () => { await layouts.customLayout(); }); - test("Update everyone's layout", async () => { + test("Update everyone's layout", { tag: '@flaky' }, async () => { + // snapshot comparison failing due to unexpected zooming slide after layout update await layouts.updateEveryone(); }); }); diff --git a/bigbluebutton-tests/playwright/parameters/parameters.spec.js b/bigbluebutton-tests/playwright/parameters/parameters.spec.js index 81f1ac569c8e..8c3672dd8a39 100644 --- a/bigbluebutton-tests/playwright/parameters/parameters.spec.js +++ b/bigbluebutton-tests/playwright/parameters/parameters.spec.js @@ -478,7 +478,8 @@ test.describe.parallel('Custom Parameters', { tag: '@ci' }, () => { await customParam.hidePresentationOnJoin(); }); - test('Force restore presentation on new events', { tag: '@ci' }, async ({ browser, context, page }) => { + test('Force restore presentation on new events', { tag: ['@ci', '@flaky'] }, async ({ browser, context, page }) => { + // tagged as flaky because it's restoring presentation right after minimizing it due to unexpected zooming slide const customParam = new CustomParameters(browser, context); await customParam.initModPage(page); await customParam.initUserPage(true, context, { useModMeetingId: true, joinParameter: c.forceRestorePresentationOnNewEvents }); diff --git a/bigbluebutton-tests/playwright/whiteboard/draw.js b/bigbluebutton-tests/playwright/whiteboard/draw.js deleted file mode 100644 index 9afc6064543c..000000000000 --- a/bigbluebutton-tests/playwright/whiteboard/draw.js +++ /dev/null @@ -1,40 +0,0 @@ -const { expect } = require('@playwright/test'); -const Page = require('../core/page'); -const e = require('../core/elements'); -const { ELEMENT_WAIT_LONGER_TIME } = require('../core/constants'); -const CI = process.env.CI === 'true'; - -class Draw extends Page { - constructor(browser, page) { - super(browser, page); - } - - async test() { - await this.waitForSelector(e.whiteboard, ELEMENT_WAIT_LONGER_TIME); - await this.waitAndClick(e.wbRectangleShape); - - const modWbLocator = this.getLocator(e.whiteboard); - const wbBox = await modWbLocator.boundingBox(); - const screenshotOptions = { - maxDiffPixels: 1000, - }; - - await this.page.mouse.move(wbBox.x + 0.3 * wbBox.width, wbBox.y + 0.3 * wbBox.height); - await this.page.mouse.down(); - await this.page.mouse.move(wbBox.x + 0.7 * wbBox.width, wbBox.y + 0.7 * wbBox.height); - await this.page.mouse.up(); - - await this.hasElement(e.wbDrawnShape); - - if(!CI) { - await this.setHeightWidthViewPortSize(); - await expect(modWbLocator).toHaveScreenshot('moderator-rect-ci.png', screenshotOptions); - } - } - - async getOuterHtmlDrawn() { - return this.page.evaluate((selector) => document.querySelector(selector).outerHTML, e.wbLayer); - } -} - -exports.Draw = Draw; diff --git a/bigbluebutton-tests/playwright/whiteboard/whiteboard.spec.js b/bigbluebutton-tests/playwright/whiteboard/whiteboard.spec.js index 68a34b5ec9ac..b0cd31d35669 100644 --- a/bigbluebutton-tests/playwright/whiteboard/whiteboard.spec.js +++ b/bigbluebutton-tests/playwright/whiteboard/whiteboard.spec.js @@ -1,5 +1,4 @@ const { test } = require('../fixtures'); -const { Draw } = require('./draw'); const { DrawRectangle } = require('./drawRectangle'); const { DrawEllipse } = require('./drawEllipse'); const { DrawTriangle } = require('./drawTriangle'); @@ -10,7 +9,6 @@ const { DrawStickyNote } = require('./drawStickyNote'); const { Pan } = require('./pan'); const { Eraser } = require('./eraser'); const { DrawArrow } = require('./drawArrow'); -const { MultiUsers } = require('../user/multiusers'); const { encodeCustomParams } = require('../parameters/util'); const { PARAMETER_HIDE_PRESENTATION_TOAST } = require('../core/constants'); const { DeleteDrawing } = require('./deleteDrawing'); @@ -22,7 +20,12 @@ const { ShapeOptions } = require('./shapeOptions'); const hidePresentationToast = encodeCustomParams(PARAMETER_HIDE_PRESENTATION_TOAST); -test.describe.parallel('Whiteboard tools', { tag: '@ci' }, () => { +//! @flaky note: +// all whiteboard tests are flagged as flaky due to unexpected zooming slides +// only avoiding those assertions won't be enough as most of the tests are relying only on snapshot comparisons +// so together with the further fix + re-enablement of the tests, they will need to have non-snapshot assertions added as well +// P.S. 1. the failures seems to be noticeable only on the CI +test.describe.parallel('Whiteboard tools', { tag: ['@ci', '@flaky'] }, () => { test.beforeEach(({ browserName }) => { test.skip(browserName !== 'chromium', 'Drawing visual regression tests are enabled only for Chromium'); diff --git a/bigbluebutton-tests/playwright/whiteboard/whiteboard.spec.js-snapshots/moderator-rect-ci-Chromium-linux.png b/bigbluebutton-tests/playwright/whiteboard/whiteboard.spec.js-snapshots/moderator-rect-ci-Chromium-linux.png deleted file mode 100644 index 0e67bbd35eecf703f70f9fe9351061b8eedb0d6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77318 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 Date: Thu, 21 Nov 2024 10:15:27 -0300 Subject: [PATCH 2/2] refactor: remove loading steps text (#21709) * remove loading steps text * remove loading screen children --- bigbluebutton-html5/client/meetingClient.jsx | 2 +- .../imports/startup/client/intlLoader.tsx | 8 ++++---- .../common/loading-screen/component.jsx | 5 +---- .../loading-screen-HOC/component.tsx | 13 +++--------- .../common/loading-screen/styles.js | 10 +--------- .../connection-manager/component.tsx | 20 +++++++++---------- .../custom-users-settings/component.tsx | 6 +----- .../join-handler/guest-wait/component.tsx | 2 +- .../presenceManager/component.tsx | 6 +++--- .../ui/components/meeting-ended/component.tsx | 2 +- .../components/settings-loader/component.tsx | 6 +----- 11 files changed, 27 insertions(+), 53 deletions(-) diff --git a/bigbluebutton-html5/client/meetingClient.jsx b/bigbluebutton-html5/client/meetingClient.jsx index 4e7267a4f9de..2b090d20cb21 100755 --- a/bigbluebutton-html5/client/meetingClient.jsx +++ b/bigbluebutton-html5/client/meetingClient.jsx @@ -38,7 +38,7 @@ import PLUGIN_CONFIGURATION_QUERY from '/imports/ui/components/plugins-engine/qu const Startup = () => { const loadingContextInfo = useContext(LoadingContext); useEffect(() => { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); }, []); // Logs all uncaught exceptions to the client logger window.addEventListener('error', (e) => { diff --git a/bigbluebutton-html5/imports/startup/client/intlLoader.tsx b/bigbluebutton-html5/imports/startup/client/intlLoader.tsx index 87e0b8287750..54726442bb43 100644 --- a/bigbluebutton-html5/imports/startup/client/intlLoader.tsx +++ b/bigbluebutton-html5/imports/startup/client/intlLoader.tsx @@ -126,7 +126,7 @@ const IntlLoader: React.FC = ({ const foundLocales = typedResp.filter((locale) => locale instanceof Object) as LocaleJson[]; if (foundLocales.length === 0) { const error = `${{ logCode: 'intl_fetch_locale_error' }},Could not fetch any locale file for ${languageSets.join(', ')}`; - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); logger.error(error); throw new Error(error); } @@ -137,15 +137,15 @@ const IntlLoader: React.FC = ({ setCurrentLocale(replacedLocale); setMessages(mergedLocale); if (!init) { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); } }).catch((error) => { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); throw new Error(error); }); }) .catch(() => { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); throw new Error('unable to fetch localized messages'); }); }, []); diff --git a/bigbluebutton-html5/imports/ui/components/common/loading-screen/component.jsx b/bigbluebutton-html5/imports/ui/components/common/loading-screen/component.jsx index 9e2d8f008ee2..7683c040584d 100644 --- a/bigbluebutton-html5/imports/ui/components/common/loading-screen/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/common/loading-screen/component.jsx @@ -1,16 +1,13 @@ import React from 'react'; import Styled from './styles'; -const LoadingScreen = ({ children }) => ( +const LoadingScreen = () => (
- - {children} - ); diff --git a/bigbluebutton-html5/imports/ui/components/common/loading-screen/loading-screen-HOC/component.tsx b/bigbluebutton-html5/imports/ui/components/common/loading-screen/loading-screen-HOC/component.tsx index 1d7ede17cd04..2894f6dac0af 100644 --- a/bigbluebutton-html5/imports/ui/components/common/loading-screen/loading-screen-HOC/component.tsx +++ b/bigbluebutton-html5/imports/ui/components/common/loading-screen/loading-screen-HOC/component.tsx @@ -3,16 +3,14 @@ import LoadingScreen from '../component'; interface LoadingContent { isLoading: boolean; - loadingMessage: string; } interface LoadingContextContent extends LoadingContent { - setLoading: (isLoading: boolean, loadingMessage: string) => void; + setLoading: (isLoading: boolean) => void; } export const LoadingContext = React.createContext({ isLoading: false, - loadingMessage: '', setLoading: () => { }, }); @@ -25,17 +23,14 @@ const LoadingScreenHOC: React.FC = ({ }) => { const [loading, setLoading] = React.useState({ isLoading: false, - loadingMessage: '', }); return ( { + setLoading: (isLoading: boolean) => { setLoading({ isLoading, - loadingMessage, }); }, }} @@ -43,9 +38,7 @@ const LoadingScreenHOC: React.FC = ({ { loading.isLoading ? ( - -

{loading.loadingMessage}

-
+ ) : null } diff --git a/bigbluebutton-html5/imports/ui/components/common/loading-screen/styles.js b/bigbluebutton-html5/imports/ui/components/common/loading-screen/styles.js index b0b40dba24a7..81733d52eacb 100644 --- a/bigbluebutton-html5/imports/ui/components/common/loading-screen/styles.js +++ b/bigbluebutton-html5/imports/ui/components/common/loading-screen/styles.js @@ -1,7 +1,6 @@ import styled, { css, keyframes } from 'styled-components'; import { mdPaddingX } from '/imports/ui/stylesheets/styled-components/general'; -import { loaderBg, loaderBullet, colorWhite } from '/imports/ui/stylesheets/styled-components/palette'; -import { fontSizeLarge } from '/imports/ui/stylesheets/styled-components/typography'; +import { loaderBg, loaderBullet } from '/imports/ui/stylesheets/styled-components/palette'; const Background = styled.div` position: fixed; @@ -57,16 +56,9 @@ const Bounce2 = styled.div` `} `; -const Message = styled.div` - font-size: ${fontSizeLarge}; - color: ${colorWhite}; - text-align: center; -`; - export default { Background, Spinner, Bounce1, Bounce2, - Message, }; diff --git a/bigbluebutton-html5/imports/ui/components/connection-manager/component.tsx b/bigbluebutton-html5/imports/ui/components/connection-manager/component.tsx index 7368a06eb795..df19a2418a56 100644 --- a/bigbluebutton-html5/imports/ui/components/connection-manager/component.tsx +++ b/bigbluebutton-html5/imports/ui/components/connection-manager/component.tsx @@ -97,11 +97,11 @@ const ConnectionManager: React.FC = ({ children }): Reac BBBWeb.index().then(({ data }) => { setGraphqlUrl(data.graphqlWebsocketUrl); }).catch((error) => { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); throw new Error('Error fetching GraphQL URL: '.concat(error.message || '')); }); logger.info('Fetching GraphQL URL'); - loadingContextInfo.setLoading(true, '1/2'); + loadingContextInfo.setLoading(true); }, []); useEffect(() => { @@ -155,12 +155,12 @@ const ConnectionManager: React.FC = ({ children }): Reac useEffect(() => { logger.info('Connecting to GraphQL server'); - loadingContextInfo.setLoading(true, '2/2'); + loadingContextInfo.setLoading(true); if (graphqlUrl) { const urlParams = new URLSearchParams(window.location.search); const sessionToken = urlParams.get('sessionToken'); if (!sessionToken) { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); throw new Error('Missing session token'); } sessionStorage.setItem('sessionToken', sessionToken); @@ -215,7 +215,7 @@ const ConnectionManager: React.FC = ({ children }): Reac } if (error && typeof error === 'object' && 'code' in error && error.code === 4403) { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); setTerminalError('Server refused the connection'); return false; } @@ -233,7 +233,7 @@ const ConnectionManager: React.FC = ({ children }): Reac on: { error: (error) => { logger.error('Graphql Client Error:', error); - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); connectionStatus.setConnectedStatus(false); setErrorCounts((prev: number) => prev + 1); }, @@ -259,7 +259,7 @@ const ConnectionManager: React.FC = ({ children }): Reac // message ID -1 as a signal to terminate the session // it contains a prop message.messageId which can be used to show a proper error to the user logger.error({ logCode: 'graphql_server_closed_connection', extraInfo: message }, 'Graphql Server closed the connection'); - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); const payload = message.payload as ErrorPayload[]; if (payload[0].messageId) { setTerminalError(new Error(payload[0].message, { cause: payload[0].messageId })); @@ -277,12 +277,12 @@ const ConnectionManager: React.FC = ({ children }): Reac ); wsLink = ApolloLink.from([payloadSizeCheckLink, errorLink, graphWsLink]); wsLink.setOnError((error) => { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); throw new Error('Error: on apollo connection'.concat(JSON.stringify(error) || '')); }); apolloContextHolder.setLink(subscription); } catch (error) { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); throw new Error('Error creating WebSocketLink: '.concat(JSON.stringify(error) || '')); } let client; @@ -295,7 +295,7 @@ const ConnectionManager: React.FC = ({ children }): Reac setApolloClient(client); apolloContextHolder.setClient(client); } catch (error) { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); throw new Error('Error creating Apollo Client: '.concat(JSON.stringify(error) || '')); } } diff --git a/bigbluebutton-html5/imports/ui/components/join-handler/custom-users-settings/component.tsx b/bigbluebutton-html5/imports/ui/components/join-handler/custom-users-settings/component.tsx index f440e2054de3..21327b46b600 100644 --- a/bigbluebutton-html5/imports/ui/components/join-handler/custom-users-settings/component.tsx +++ b/bigbluebutton-html5/imports/ui/components/join-handler/custom-users-settings/component.tsx @@ -100,11 +100,7 @@ const CustomUsersSettings: React.FC = ({ /> ) : null} {loading ? ( - -
- Loading... -
-
+ ) : null} ); diff --git a/bigbluebutton-html5/imports/ui/components/join-handler/guest-wait/component.tsx b/bigbluebutton-html5/imports/ui/components/join-handler/guest-wait/component.tsx index 364a46f26bfa..efa12c54a303 100644 --- a/bigbluebutton-html5/imports/ui/components/join-handler/guest-wait/component.tsx +++ b/bigbluebutton-html5/imports/ui/components/join-handler/guest-wait/component.tsx @@ -125,7 +125,7 @@ const GuestWait: React.FC = (props) => { const sessionToken = getSearchParam('sessionToken'); if (loadingContextInfo.isLoading) { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); } if (!sessionToken) { diff --git a/bigbluebutton-html5/imports/ui/components/join-handler/presenceManager/component.tsx b/bigbluebutton-html5/imports/ui/components/join-handler/presenceManager/component.tsx index 5df4098f3f51..a83b06984e35 100644 --- a/bigbluebutton-html5/imports/ui/components/join-handler/presenceManager/component.tsx +++ b/bigbluebutton-html5/imports/ui/components/join-handler/presenceManager/component.tsx @@ -121,7 +121,7 @@ const PresenceManager: React.FC = ({ useEffect(() => { if (isGuestAllowed) { timeoutRef.current = setTimeout(() => { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); throw new Error('Authentication timeout'); }, connectionTimeout); } @@ -155,7 +155,7 @@ const PresenceManager: React.FC = ({ useEffect(() => { if (joinErrorCode) { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); } }, [joinErrorCode, joinErrorMessage]); @@ -204,7 +204,7 @@ const PresenceManagerContainer: React.FC = ({ chi const loadingContextInfo = useContext(LoadingContext); if (loading || userInfoLoading) return null; if (error || userInfoError) { - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); logger.debug(`Error on user authentication: ${error}`); } diff --git a/bigbluebutton-html5/imports/ui/components/meeting-ended/component.tsx b/bigbluebutton-html5/imports/ui/components/meeting-ended/component.tsx index fe82e6583c36..7447ed9a0d70 100644 --- a/bigbluebutton-html5/imports/ui/components/meeting-ended/component.tsx +++ b/bigbluebutton-html5/imports/ui/components/meeting-ended/component.tsx @@ -380,7 +380,7 @@ const MeetingEnded: React.FC = ({ useEffect(() => { // Sets Loading to falsed and removes loading splash screen - loadingContextInfo.setLoading(false, ''); + loadingContextInfo.setLoading(false); // Stops all media tracks window.dispatchEvent(new Event('StopAudioTracks')); // get the media tag from the session storage diff --git a/bigbluebutton-html5/imports/ui/components/settings-loader/component.tsx b/bigbluebutton-html5/imports/ui/components/settings-loader/component.tsx index e3caddefe85a..d0a6ef1e7fd9 100644 --- a/bigbluebutton-html5/imports/ui/components/settings-loader/component.tsx +++ b/bigbluebutton-html5/imports/ui/components/settings-loader/component.tsx @@ -93,11 +93,7 @@ const SettingsLoader: React.FC = (props) => { /> ) : null} {loading ? ( - -
- Loading... -
-
+ ) : null} );