Skip to content

Commit

Permalink
Merge pull request #7291 from p12tic/www-fix-e2e-instabilities
Browse files Browse the repository at this point in the history
www: Fix e2e test instabilities
  • Loading branch information
p12tic committed Dec 20, 2023
2 parents 7b99502 + c1db6ef commit 0f96401
Show file tree
Hide file tree
Showing 8 changed files with 102 additions and 56 deletions.
2 changes: 1 addition & 1 deletion smokes-react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"description": "smoke tests for buildbot with cypress",
"main": "index.js",
"dependencies": {
"@playwright/test": "^1.37.0",
"@playwright/test": "^1.40.1",
"qs": "^6.11",
"request": "^2.88.2",
"typescript": "^4.4.2"
Expand Down
6 changes: 3 additions & 3 deletions smokes-react/tests/buildsnavigation.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
*/

import {expect, test} from "@playwright/test";
import {BasePage} from "./pages/base";
import {BuilderPage} from './pages/builder';
import {ForcePage} from "./pages/force";
import {HomePage} from './pages/home';
Expand All @@ -42,9 +43,9 @@ test.describe('previousnextlink', function() {
await BuilderPage.gotoBuild(page, "runtests", `${lastbuild + 2}`);
const lastBuildURL = page.url();
await BuilderPage.clickPreviousButtonAndWait(page);
expect.poll(() => page.url()).not.toMatch(lastBuildURL);
await expect.poll(() => page.url()).not.toMatch(lastBuildURL);
await BuilderPage.clickNextButtonAndWait(page);
expect.poll(() => page.url()).toMatch(lastBuildURL);
await expect.poll(() => page.url()).toMatch(lastBuildURL);
});
});

Expand All @@ -54,7 +55,6 @@ test.describe('forceandstop', function() {

await BuilderPage.gotoForce(page, "slowruntests", "force");
await ForcePage.clickStartButtonAndWaitRedirectToBuild(page);
await expect.poll(() => page.url()).toMatch(/\/#\/builders\/[1-9]+\/builds\/[1-9]+/);
await BuilderPage.clickStopButton(page);

await expect.poll(async () => {
Expand Down
3 changes: 2 additions & 1 deletion smokes-react/tests/pages/force.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {BasePage} from "./base";
export class ForcePage {
static async setInputText(page: Page, fieldName: string, value: string) {
const input = page.getByTestId(`force-field-${fieldName}`);
expect.poll(() => input.count()).toEqual(1);
await expect.poll(() => input.count()).toEqual(1);
await input.fill(value);
}

Expand Down Expand Up @@ -58,6 +58,7 @@ export class ForcePage {
static async clickStartButtonAndWaitRedirectToBuild(page: Page) {
await ForcePage.clickStartButtonAndWait(page);
await page.waitForURL(/\/#\/builders\/[0-9]\/builds\/[0-9]+$/);
await BasePage.waitUntilFinishedLoading(page);
}

static async clickCancelWholeQueue(page: Page) {
Expand Down
3 changes: 3 additions & 0 deletions smokes-react/tests/pages/home.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,13 @@
*/

import {expect, Page} from "@playwright/test";
import {BasePage} from "./base";

export class HomePage {
static async goto(page: Page) {
await page.goto('/#/');
await page.waitForURL(/\/#\/$/);
await BasePage.waitUntilFinishedLoading(page);
}

static getBuilderCard(page: Page) {
Expand Down
3 changes: 2 additions & 1 deletion smokes-react/tests/pages/worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
Copyright Buildbot Team Members
*/

import {Page} from "@playwright/test";
import {expect, Page} from "@playwright/test";
import {BasePage} from "./base";

export class WorkerPage {
Expand All @@ -34,6 +34,7 @@ export class WorkerPage {
await BasePage.waitUntilUrlChanged(page, async () => {
await page.locator("tr")
.filter({has: page.locator("td").nth(0).getByText(builderName)})
.filter({has: page.locator("td").nth(1).getByText(buildNumber.toString())})
.locator("td").nth(1).getByText(buildNumber.toString()).click();
});
await BasePage.waitUntilFinishedLoading(page);
Expand Down
127 changes: 81 additions & 46 deletions smokes-react/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,12 @@
# yarn lockfile v1


"@playwright/test@^1.37.0":
version "1.37.0"
resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.37.0.tgz#5b3b60dabaabc0d5d3021fb5a5bb8250b424c71d"
integrity sha512-181WBLk4SRUyH1Q96VZl7BP6HcK0b7lbdeKisn3N/vnjitk+9HbdlFz/L5fey05vxaAhldIDnzo8KUoy8S3mmQ==
"@playwright/test@^1.40.1":
version "1.40.1"
resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.40.1.tgz#9e66322d97b1d74b9f8718bacab15080f24cde65"
integrity sha512-EaaawMTOeEItCRvfmkI9v6rBkF1svM8wjl/YPRrg2N2Wmp+4qJYkWtJsbew1szfKKDm6fPLy4YAanBhIlf9dWw==
dependencies:
"@types/node" "*"
playwright-core "1.37.0"
optionalDependencies:
fsevents "2.3.2"

"@types/node@*":
version "20.4.9"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.9.tgz#c7164e0f8d3f12dfae336af0b1f7fdec8c6b204f"
integrity sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==
playwright "1.40.1"

ajv@^6.12.3:
version "6.12.6"
Expand Down Expand Up @@ -62,12 +54,13 @@ bcrypt-pbkdf@^1.0.0:
tweetnacl "^0.14.3"

call-bind@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
version "1.0.5"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513"
integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==
dependencies:
function-bind "^1.1.1"
get-intrinsic "^1.0.2"
function-bind "^1.1.2"
get-intrinsic "^1.2.1"
set-function-length "^1.1.1"

caseless@~0.12.0:
version "0.12.0"
Expand All @@ -93,6 +86,15 @@ dashdash@^1.12.0:
dependencies:
assert-plus "^1.0.0"

define-data-property@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3"
integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==
dependencies:
get-intrinsic "^1.2.1"
gopd "^1.0.1"
has-property-descriptors "^1.0.0"

delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
Expand Down Expand Up @@ -150,20 +152,20 @@ fsevents@2.3.2:
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==

function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==

get-intrinsic@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82"
integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==
get-intrinsic@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b"
integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==
dependencies:
function-bind "^1.1.1"
has "^1.0.3"
function-bind "^1.1.2"
has-proto "^1.0.1"
has-symbols "^1.0.3"
hasown "^2.0.0"

getpass@^0.1.1:
version "0.1.7"
Expand All @@ -172,6 +174,13 @@ getpass@^0.1.1:
dependencies:
assert-plus "^1.0.0"

gopd@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
dependencies:
get-intrinsic "^1.1.3"

har-schema@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
Expand All @@ -185,6 +194,13 @@ har-validator@~5.1.3:
ajv "^6.12.3"
har-schema "^2.0.0"

has-property-descriptors@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340"
integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==
dependencies:
get-intrinsic "^1.2.2"

has-proto@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
Expand All @@ -195,12 +211,12 @@ has-symbols@^1.0.3:
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==

has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
hasown@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
dependencies:
function-bind "^1.1.1"
function-bind "^1.1.2"

http-signature@~1.2.0:
version "1.2.0"
Expand Down Expand Up @@ -269,29 +285,38 @@ oauth-sign@~0.9.0:
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==

object-inspect@^1.9.0:
version "1.12.3"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
version "1.13.1"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==

performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==

playwright-core@1.37.0:
version "1.37.0"
resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.37.0.tgz#a0a009b840076706452e29aab0efe0ebf5d45ab1"
integrity sha512-1c46jhTH/myQw6sesrcuHVtLoSNfJv8Pfy9t3rs6subY7kARv0HRw5PpyfPYPpPtQvBOmgbE6K+qgYUpj81LAA==
playwright-core@1.40.1:
version "1.40.1"
resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.40.1.tgz#442d15e86866a87d90d07af528e0afabe4c75c05"
integrity sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ==

playwright@1.40.1:
version "1.40.1"
resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.40.1.tgz#a11bf8dca15be5a194851dbbf3df235b9f53d7ae"
integrity sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw==
dependencies:
playwright-core "1.40.1"
optionalDependencies:
fsevents "2.3.2"

psl@^1.1.28:
version "1.9.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==

punycode@^2.1.0, punycode@^2.1.1:
version "2.3.0"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
version "2.3.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==

qs@^6.11:
version "6.11.2"
Expand Down Expand Up @@ -341,6 +366,16 @@ safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==

set-function-length@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed"
integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==
dependencies:
define-data-property "^1.1.1"
get-intrinsic "^1.2.1"
gopd "^1.0.1"
has-property-descriptors "^1.0.0"

side-channel@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
Expand All @@ -351,9 +386,9 @@ side-channel@^1.0.4:
object-inspect "^1.9.0"

sshpk@^1.7.0:
version "1.17.0"
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5"
integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==
version "1.18.0"
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028"
integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==
dependencies:
asn1 "~0.2.3"
assert-plus "^1.0.0"
Expand Down
12 changes: 9 additions & 3 deletions www/react-base/src/views/HomeView/HomeView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import {
useDataApiQuery
} from "buildbot-data-js";
import {useContext} from "react";
import {Config, ConfigContext} from "buildbot-ui";
import {Config, ConfigContext, LoadingIndicator} from "buildbot-ui";
import {BuildSticker} from "../../components/BuildSticker/BuildSticker";
import {Link} from "react-router-dom";
import {Card} from "react-bootstrap";
Expand Down Expand Up @@ -103,8 +103,14 @@ export const HomeView = observer(() => {
<Card.Body>
<h2>Welcome to buildbot</h2>
<TableHeading>
{buildsRunning.array.length} build{buildsRunning.array.length === 1 ? ' ' : 's '}
running currently
{
!buildsRunning.resolved
? <LoadingIndicator/>
: <>
{buildsRunning.array.length} build{buildsRunning.array.length === 1 ? ' ' : 's '}
running currently
</>
}
</TableHeading>
<ul>
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export const LoadingIndicator = () => {
// FIXME: implement spinning
return (
<div className="bb-load-indicator">
<div className="spinner">
<div data-bb-test-id="loading" className="spinner">
<FaCircleNotch className="fa-spin"/>
<p>loading</p>
</div>
Expand Down

0 comments on commit 0f96401

Please sign in to comment.