Port remaining Puppeteer tests over to Cypress (#9104)
* Port remaining Puppeteer tests over to Cypress * Remove puppeteer support files * Fix lifecycle matrixclientpeg setup race condition * Alternative solution to the lifecycle problem * Dismiss the notifications toast
This commit is contained in:
parent
1e4c336fed
commit
f566c600e2
60 changed files with 105 additions and 4524 deletions
98
cypress/e2e/toasts/analytics-toast.ts
Normal file
98
cypress/e2e/toasts/analytics-toast.ts
Normal file
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
Copyright 2022 The Matrix.org Foundation C.I.C.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/// <reference types="cypress" />
|
||||
|
||||
import { SynapseInstance } from "../../plugins/synapsedocker";
|
||||
import Chainable = Cypress.Chainable;
|
||||
|
||||
function assertNoToasts(): void {
|
||||
cy.get(".mx_Toast_toast").should("not.exist");
|
||||
}
|
||||
|
||||
function getToast(expectedTitle: string): Chainable<JQuery> {
|
||||
return cy.get(".mx_Toast_toast").contains("h2", expectedTitle).should("exist").closest(".mx_Toast_toast");
|
||||
}
|
||||
|
||||
function acceptToast(expectedTitle: string): void {
|
||||
getToast(expectedTitle).within(() => {
|
||||
cy.get(".mx_Toast_buttons .mx_AccessibleButton_kind_primary").click();
|
||||
});
|
||||
}
|
||||
|
||||
function rejectToast(expectedTitle: string): void {
|
||||
getToast(expectedTitle).within(() => {
|
||||
cy.get(".mx_Toast_buttons .mx_AccessibleButton_kind_danger_outline").click();
|
||||
});
|
||||
}
|
||||
|
||||
describe("Analytics Toast", () => {
|
||||
let synapse: SynapseInstance;
|
||||
|
||||
afterEach(() => {
|
||||
cy.stopSynapse(synapse);
|
||||
});
|
||||
|
||||
it("should not show an analytics toast if config has nothing about posthog", () => {
|
||||
cy.intercept("/config.json?cachebuster=*", req => {
|
||||
req.continue(res => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const { posthog, ...body } = res.body;
|
||||
res.send(200, body);
|
||||
});
|
||||
});
|
||||
|
||||
cy.startSynapse("default").then(data => {
|
||||
synapse = data;
|
||||
cy.initTestUser(synapse, "Tod");
|
||||
});
|
||||
|
||||
rejectToast("Notifications");
|
||||
assertNoToasts();
|
||||
});
|
||||
|
||||
describe("with posthog enabled", () => {
|
||||
beforeEach(() => {
|
||||
cy.intercept("/config.json?cachebuster=*", req => {
|
||||
req.continue(res => {
|
||||
res.send(200, {
|
||||
...res.body,
|
||||
posthog: {
|
||||
project_api_key: "foo",
|
||||
api_host: "bar",
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
cy.startSynapse("default").then(data => {
|
||||
synapse = data;
|
||||
cy.initTestUser(synapse, "Tod");
|
||||
rejectToast("Notifications");
|
||||
});
|
||||
});
|
||||
|
||||
it("should show an analytics toast which can be accepted", () => {
|
||||
acceptToast("Help improve Element");
|
||||
assertNoToasts();
|
||||
});
|
||||
|
||||
it("should show an analytics toast which can be rejected", () => {
|
||||
rejectToast("Help improve Element");
|
||||
assertNoToasts();
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue