test: Cypress | CI Stabilize (Skipped tests fixes) + Cypress upgrade to v13.0.0 (#26583)

## Description
- The PR does below:
- TogglePropertyState() revert
- BinaryDT_Spec.ts - unskip
- AssertExistingToggleState() improved to handle the UI field names
- Unskip TableV1/TableFilter2_1_Spec.ts & TableV2Filter2_1_Spec
- Fixed Apps/CommunityIssues_Spec.ts - Added ClientSide Search
validation
- /Binding/Button_Text_WithRecaptcha_spec.js - fix & unskip
- GitSync/DeleteBranch_spec.js - fix & unskip
- TableV2/TableV2_Widget_Add_button_spec.js - flaky fix
- Cypress upgrade from v12.17.4 to v13.0.0

#### Type of change
- Script fix (non-breaking change which fixes an issue)

## Testing
#### How Has This Been Tested?
- [X] Cypress CI runs

## Checklist:
#### QA activity:
- [X] Added `Test Plan Approved` label after Cypress tests were reviewed

---------

Co-authored-by: Saroj <43822041+sarojsarab@users.noreply.github.com>
This commit is contained in:
Aishwarya-U-R 2023-08-30 16:24:37 +05:30 committed by GitHub
parent 7dcff0d774
commit 45ca5c4890
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 302 additions and 379 deletions

View File

@ -6,7 +6,6 @@ export default defineConfig({
requestTimeout: 60000, requestTimeout: 60000,
responseTimeout: 60000, responseTimeout: 60000,
pageLoadTimeout: 60000, pageLoadTimeout: 60000,
videoUploadOnPasses: false,
videoCompression: false, videoCompression: false,
numTestsKeptInMemory: 5, numTestsKeptInMemory: 5,
experimentalMemoryManagement: true, experimentalMemoryManagement: true,

View File

@ -119,7 +119,7 @@ describe("GSheet Miscellaneous Tests", function () {
assertHelper.AssertNetworkStatus("@getActions", 200); assertHelper.AssertNetworkStatus("@getActions", 200);
assertHelper.AssertNetworkStatus("@postExecute", 200); assertHelper.AssertNetworkStatus("@postExecute", 200);
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it")); agHelper.ClickButton("Got it");
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
//deploy the app and verify the table data //deploy the app and verify the table data
@ -176,7 +176,7 @@ describe("GSheet Miscellaneous Tests", function () {
assertHelper.AssertNetworkStatus("@getActions", 200); assertHelper.AssertNetworkStatus("@getActions", 200);
assertHelper.AssertNetworkStatus("@postExecute", 200); assertHelper.AssertNetworkStatus("@postExecute", 200);
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it")); agHelper.ClickButton("Got it");
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
//deploy the app and verify the table data //deploy the app and verify the table data

View File

@ -9,6 +9,7 @@ import {
entityExplorer, entityExplorer,
locators, locators,
assertHelper, assertHelper,
draggableWidgets,
} from "../../../support/Objects/ObjectsCore"; } from "../../../support/Objects/ObjectsCore";
describe("AForce - Community Issues page validations", function () { describe("AForce - Community Issues page validations", function () {
@ -66,7 +67,7 @@ describe("AForce - Community Issues page validations", function () {
it("2. Validate table navigation with Server Side pagination enabled with Default selected row", () => { it("2. Validate table navigation with Server Side pagination enabled with Default selected row", () => {
entityExplorer.SelectEntityByName("Table1", "Widgets"); entityExplorer.SelectEntityByName("Table1", "Widgets");
agHelper.AssertExistingToggleState("serversidepagination", "true"); agHelper.AssertExistingToggleState("Server side pagination", "true");
propPane propPane
.ValidatePropertyFieldValue("Default selected row", "0") .ValidatePropertyFieldValue("Default selected row", "0")
@ -139,7 +140,7 @@ describe("AForce - Community Issues page validations", function () {
//propPane.EnterJSContext("Default search text", "Bug", false); //propPane.EnterJSContext("Default search text", "Bug", false);
propPane.TypeTextIntoField("Default search text", "Bug"); propPane.TypeTextIntoField("Default search text", "Bug");
deployMode.DeployApp(); deployMode.DeployApp();
table.AssertSearchText("Bug", 2); table.AssertSearchText("Bug");
table.WaitUntilTableLoad(0, 0, "v2"); table.WaitUntilTableLoad(0, 0, "v2");
table.WaitUntilTableLoad(0, 0, "v2"); table.WaitUntilTableLoad(0, 0, "v2");
deployMode.NavigateBacktoEditor(); deployMode.NavigateBacktoEditor();
@ -149,7 +150,7 @@ describe("AForce - Community Issues page validations", function () {
propPane.TypeTextIntoField("Default search text", "Quest", true, false); propPane.TypeTextIntoField("Default search text", "Quest", true, false);
deployMode.DeployApp(); deployMode.DeployApp();
table.AssertSearchText("Quest", 2); table.AssertSearchText("Quest");
table.WaitUntilTableLoad(0, 0, "v2"); table.WaitUntilTableLoad(0, 0, "v2");
deployMode.NavigateBacktoEditor(); deployMode.NavigateBacktoEditor();
table.WaitUntilTableLoad(0, 0, "v2"); table.WaitUntilTableLoad(0, 0, "v2");
@ -168,42 +169,75 @@ describe("AForce - Community Issues page validations", function () {
table.WaitUntilTableLoad(0, 0, "v2"); table.WaitUntilTableLoad(0, 0, "v2");
}); });
it.skip("6. Validate Search table with Client Side Search enabled & disabled", () => { it("6. Validate Search table with Client Side Search enabled & disabled & onSearchTextChanged is set", () => {
entityExplorer.SelectEntityByName("Table1", "Widgets"); entityExplorer.SelectEntityByName("Table1", "Widgets");
agHelper.AssertExistingToggleState("clientsidesearch", "true"); agHelper.AssertExistingToggleState("Client side search", "true");
deployMode.DeployApp(); deployMode.DeployApp(locators._widgetInDeployed(draggableWidgets.TABLE));
table.WaitUntilTableLoad(0, 0, "v2"); table.WaitUntilTableLoad(0, 1, "v2");
table.SearchTable("Bug", 2); table.SearchTable("Best");
table.WaitUntilTableLoad(0, 0, "v2"); table.WaitUntilTableLoad(0, 1, "v2");
cy.xpath(table._searchBoxCross).click(); table.ResetSearch();
table.SearchTable("Quest"); table.SearchTable("Quest");
table.WaitUntilTableLoad(0, 0, "v2"); table.WaitUntilTableLoad(0, 1, "v2");
cy.xpath(table._searchBoxCross).click(); table.ResetSearch();
deployMode.NavigateBacktoEditor(); deployMode.NavigateBacktoEditor();
table.WaitUntilTableLoad(0, 0, "v2"); table.WaitUntilTableLoad(0, 1, "v2");
entityExplorer.SelectEntityByName("Table1", "Widgets"); entityExplorer.SelectEntityByName("Table1", "Widgets");
propPane.TogglePropertyState("Client side search", "Off"); propPane.TogglePropertyState("Client side search", "Off");
deployMode.DeployApp(); deployMode.DeployApp(locators._widgetInDeployed(draggableWidgets.TABLE));
table.WaitUntilTableLoad(0, 0, "v2"); table.WaitUntilTableLoad(0, 1, "v2");
table.SearchTable("Bug", 2); table.SearchTable("Bug");
table.WaitForTableEmpty("v2"); table.WaitUntilTableLoad(0, 1, "v2"); //Since onSearchTextChanged is set , Search is queried for Search text with Client side search On or Off
cy.xpath(table._searchBoxCross).click(); table.ResetSearch();
table.SearchTable("Quest"); table.SearchTable("Quest");
table.WaitForTableEmpty("v2"); table.WaitUntilTableLoad(0, 1, "v2");
cy.xpath(table._searchBoxCross).click(); table.ResetSearch();
//Remove onSearchTextChanged & test
deployMode.NavigateBacktoEditor(); deployMode.NavigateBacktoEditor();
table.WaitUntilTableLoad(0, 0, "v2"); table.WaitUntilTableLoad(0, 1, "v2");
entityExplorer.SelectEntityByName("Table1", "Widgets"); entityExplorer.SelectEntityByName("Table1", "Widgets");
propPane.TogglePropertyState("Client side search", "On"); propPane.TogglePropertyState("Client side search", "On");
propPane.EnterJSContext("onSearchTextChanged", "");
propPane.ToggleJSMode("onSearchTextChanged", false);
deployMode.DeployApp(locators._widgetInDeployed(draggableWidgets.TABLE));
table.WaitUntilTableLoad(0, 1, "v2");
table.SearchTable("Xano");
table.WaitForTableEmpty("v2"); //Since Xano is present in 2nd page & Client side search is On
table.ResetSearch();
table.SearchTable("SSL");
table.WaitUntilTableLoad(0, 1, "v2"); //as 1st page has SSL entries
table.ResetSearch();
//if the client side search is off, and there is no text in onSearchTextChanged, we still go ahead with client side search. this is a known limitation deployMode.NavigateBacktoEditor();
deployMode.NavigateBacktoEditor();
table.WaitUntilTableLoad(0, 1, "v2");
entityExplorer.SelectEntityByName("Table1", "Widgets");
propPane.TogglePropertyState("Client side search", "Off");
deployMode.DeployApp(locators._widgetInDeployed(draggableWidgets.TABLE));
table.WaitUntilTableLoad(0, 1, "v2");
table.SearchTable("Xano");
table.WaitForTableEmpty("v2"); //Since Xano is present in 2nd page & Client side search is Off
table.ResetSearch();
table.SearchTable("SSL");
table.WaitUntilTableLoad(0, 1, "v2"); //as 1st page has SSL entries
table.ResetSearch();
deployMode.NavigateBacktoEditor();
}); });
it("7. Validate Filter table", () => { it("7. Validate Filter table", () => {
@ -293,7 +327,7 @@ describe("AForce - Community Issues page validations", function () {
agHelper.ClickButton("Confirm"); agHelper.ClickButton("Confirm");
agHelper.AssertElementAbsence(locators._toastMsg); //Making sure internal api doesnt throw error agHelper.AssertElementAbsence(locators._toastMsg); //Making sure internal api doesnt throw error
agHelper.Sleep(3000); agHelper.Sleep(3000);
table.SearchTable("Suggestion", 2); table.SearchTable("Suggestion");
table.WaitUntilTableLoad(0, 0, "v2"); table.WaitUntilTableLoad(0, 0, "v2");
table.ReadTableRowColumnData(0, 0, "v2", 4000).then((cellData) => { table.ReadTableRowColumnData(0, 0, "v2", 4000).then((cellData) => {

View File

@ -23,48 +23,6 @@ describe(
_.agHelper.SelectDropdownList("Google reCAPTCHA version", "reCAPTCHA v3"); _.agHelper.SelectDropdownList("Google reCAPTCHA version", "reCAPTCHA v3");
}); });
//This test to be enabled once the product bug is fixed
it.skip("Validate the Button binding with Text Widget with Recaptcha Token with invalid key before using valid key", function () {
cy.get("button")
.contains("Submit")
.should("be.visible")
.click({ force: true });
cy.testCodeMirrorLast(testdata.invalidKey);
_.entityExplorer.SelectEntityByName("Text1");
cy.get(".t--draggable-textwidget span")
.last()
.invoke("text")
.then((x) => {
cy.log(x);
expect(x).to.be.empty;
});
_.entityExplorer.SelectEntityByName("Button1");
cy.get(".t--property-control-googlerecaptchaversion .bp3-popover-target")
.last()
.should("be.visible")
.click({ force: true });
cy.get(".t--dropdown-option:contains('reCAPTCHA v2')").click({
force: true,
});
cy.get("button")
.contains("Submit")
.should("be.visible")
.click({ force: true });
cy.get(".t--toast-action span").should("have.text", testdata.errorMsg);
_.entityExplorer.SelectEntityByName("Text1");
cy.wait(3000);
cy.get(".t--draggable-textwidget span")
.last()
.invoke("text")
.then((x) => {
cy.log(x);
expect(x).to.be.empty;
});
});
it("2. Validate the Button binding with Text Widget with Recaptcha Token with v2Key & upward compatibilty doesnt work", function () { it("2. Validate the Button binding with Text Widget with Recaptcha Token with v2Key & upward compatibilty doesnt work", function () {
_.entityExplorer.SelectEntityByName("Button1"); _.entityExplorer.SelectEntityByName("Button1");
_.propPane.UpdatePropertyFieldValue( _.propPane.UpdatePropertyFieldValue(
@ -117,48 +75,22 @@ describe(
_.entityExplorer.SelectEntityByName("Button1"); _.entityExplorer.SelectEntityByName("Button1");
_.agHelper.SelectDropdownList("Google reCAPTCHA version", "reCAPTCHA v2"); _.agHelper.SelectDropdownList("Google reCAPTCHA version", "reCAPTCHA v2");
_.agHelper.ClickButton("Submit"); _.agHelper.ClickButton("Submit");
_.agHelper.AssertContains("Google Re-Captcha token generation failed!"); //toast doesnt come when run in CI! _.agHelper.AssertContains("Google Re-Captcha token generation failed!");
}); });
//This test to be enabled once the product bug is fixed it("4. Validate the Button binding with Text Widget with Recaptcha Token with invalid key (after using valid key)", function () {
it.skip("Validate the Button binding with Text Widget with Recaptcha Token with invalid key", function () { _.propPane.DeleteWidgetFromPropertyPane("Text1");
cy.get("button")
.contains("Submit")
.should("be.visible")
.click({ force: true });
cy.testCodeMirrorLast(testdata.invalidKey);
_.entityExplorer.SelectEntityByName("Text1");
cy.get(".t--draggable-textwidget span")
.last()
.invoke("text")
.then((x) => {
cy.log(x);
expect(x).not.to.be.empty;
});
_.entityExplorer.SelectEntityByName("Button1"); _.entityExplorer.SelectEntityByName("Button1");
_.propPane.UpdatePropertyFieldValue(
cy.get(".t--property-control-googlerecaptchaversion .bp3-popover-target") "Google reCAPTCHA key",
.last() testdata.invalidKey,
.should("be.visible") );
.click({ force: true }); _.agHelper.ClickButton("Submit"); //for version 3
cy.get(".t--dropdown-option:contains('reCAPTCHA v2')").click({ _.agHelper.WaitUntilToastDisappear(testdata.errorMsg);
force: true, _.entityExplorer.SelectEntityByName("Button1");
}); _.agHelper.SelectDropdownList("Google reCAPTCHA version", "reCAPTCHA v2");
cy.get("button") _.agHelper.ClickButton("Submit");
.contains("Submit") _.agHelper.WaitUntilToastDisappear(testdata.errorMsg);
.should("be.visible")
.click({ force: true });
_.entityExplorer.SelectEntityByName("Text1");
cy.wait(3000);
cy.get(".t--draggable-textwidget span")
.last()
.invoke("text")
.then((x) => {
cy.log(x);
expect(x).not.to.be.empty;
});
}); });
}, },
); );

View File

@ -43,34 +43,34 @@ describe("Validate basic binding of Input widget to Input widget", () => {
}); });
}); });
//Till bug fixed // //Till bug fixed
it.skip("2. Validation of default displayed in Select widget based on row selected + Bug 12531", function () { // it.skip("2. Validation of default displayed in Select widget based on row selected + Bug 12531", function () {
table.SelectTableRow(1); // table.SelectTableRow(1);
agHelper.ReadSelectedDropDownValue().then(($selectedValue) => { // agHelper.ReadSelectedDropDownValue().then(($selectedValue) => {
expect($selectedValue).to.eq("#2"); // expect($selectedValue).to.eq("#2");
}); // });
table.SelectTableRow(0); // table.SelectTableRow(0);
agHelper.ReadSelectedDropDownValue().then(($selectedValue) => { // agHelper.ReadSelectedDropDownValue().then(($selectedValue) => {
expect($selectedValue).to.eq("#1"); // expect($selectedValue).to.eq("#1");
}); // });
table.SelectTableRow(2); // table.SelectTableRow(2);
agHelper.ReadSelectedDropDownValue().then(($selectedValue) => { // agHelper.ReadSelectedDropDownValue().then(($selectedValue) => {
expect($selectedValue).to.eq("Select option"); // expect($selectedValue).to.eq("Select option");
}); // });
//Change select value now - failing here! // //Change select value now - failing here!
agHelper.SelectDropDown("#1"); // agHelper.SelectDropDown("#1");
agHelper.ReadSelectedDropDownValue().then(($selectedValue) => { // agHelper.ReadSelectedDropDownValue().then(($selectedValue) => {
expect($selectedValue).to.eq("#1"); // expect($selectedValue).to.eq("#1");
}); // });
table.SelectTableRow(2, 0, false); //Deselecting here! // table.SelectTableRow(2, 0, false); //Deselecting here!
agHelper.ReadSelectedDropDownValue().then(($selectedValue) => { // agHelper.ReadSelectedDropDownValue().then(($selectedValue) => {
expect($selectedValue).to.eq("Select option"); // expect($selectedValue).to.eq("Select option");
}); // });
}); // });
it("3. Verify Selecting the already selected row deselects it", () => { it("3. Verify Selecting the already selected row deselects it", () => {
table.SelectTableRow(0); //select here table.SelectTableRow(0); //select here

View File

@ -34,7 +34,7 @@ describe("Bug 9334: The Select widget value is sent as null when user switches b
agHelper.AssertContains("Successfully generated a page"); agHelper.AssertContains("Successfully generated a page");
//assertHelper.AssertNetworkStatus("@getActions", 200);//Since failing sometimes //assertHelper.AssertNetworkStatus("@getActions", 200);//Since failing sometimes
assertHelper.AssertNetworkStatus("@postExecute", 200); assertHelper.AssertNetworkStatus("@postExecute", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it")); agHelper.ClickButton("Got it");
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
table.WaitUntilTableLoad(); table.WaitUntilTableLoad();
@ -52,10 +52,11 @@ describe("Bug 9334: The Select widget value is sent as null when user switches b
agHelper.AssertContains("Successfully generated a page"); agHelper.AssertContains("Successfully generated a page");
//assertHelper.AssertNetworkStatus("@getActions", 200);//Since failing sometimes //assertHelper.AssertNetworkStatus("@getActions", 200);//Since failing sometimes
assertHelper.AssertNetworkStatus("@postExecute", 200); assertHelper.AssertNetworkStatus("@postExecute", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it")); agHelper.ClickButton("Got it");
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
table.WaitUntilTableLoad(); table.WaitUntilTableLoad();
}); });
it("2. Navigate & Assert toast", () => { it("2. Navigate & Assert toast", () => {
//Navigating between CRUD (Page3) & EmptyPage (Page2): //Navigating between CRUD (Page3) & EmptyPage (Page2):
entityExplorer.SelectEntityByName("Page1"); entityExplorer.SelectEntityByName("Page1");

View File

@ -1,7 +1,7 @@
import adminsSettings from "../../../../locators/AdminsSettings"; import adminsSettings from "../../../../locators/AdminsSettings";
describe("Email verification", () => { describe("Email verification", () => {
it("Shows the email verification pending page correctly", () => { it("1. Shows the email verification pending page correctly", () => {
cy.LogOut(); cy.LogOut();
cy.visit("/user/verificationPending?email=test@appsmith.com"); cy.visit("/user/verificationPending?email=test@appsmith.com");
cy.wait(1000); cy.wait(1000);
@ -9,7 +9,8 @@ describe("Email verification", () => {
"VerificationPendingScreen", "VerificationPendingScreen",
); );
}); });
it("Verification error pages", () => {
it("2. Verification error pages", () => {
const errorCode = { const errorCode = {
ALREADY_VERIFIED: "AE-EMV-4095", ALREADY_VERIFIED: "AE-EMV-4095",
EXPIRED: "AE-EMV-4096", EXPIRED: "AE-EMV-4096",
@ -45,7 +46,9 @@ describe("Email verification", () => {
"Unknown error", "Unknown error",
); );
}); });
it.skip("Email verification settings test", () => {
//Skipping since Server restart taking a lot of time
it.skip("3. Email verification settings test", () => {
cy.LogOut(); cy.LogOut();
cy.LoginFromAPI(Cypress.env("USERNAME"), Cypress.env("PASSWORD")); cy.LoginFromAPI(Cypress.env("USERNAME"), Cypress.env("PASSWORD"));
cy.get(".admin-settings-menu-option").should("be.visible"); cy.get(".admin-settings-menu-option").should("be.visible");
@ -54,11 +57,11 @@ describe("Email verification", () => {
cy.wait("@getEnvVariables"); cy.wait("@getEnvVariables");
cy.get(adminsSettings.authenticationTab).click(); cy.get(adminsSettings.authenticationTab).click();
cy.get(adminsSettings.formloginButton).click(); cy.get(adminsSettings.formloginButton).click();
cy.pause(); //cy.pause();
// Assert verification is disabled // Assert verification is disabled
cy.get(adminsSettings.enableEmailVerificationInput).should("be.disabled"); cy.get(adminsSettings.enableEmailVerificationInput).should("be.disabled");
// Assert callout // Assert callout
cy.get(adminsSettings.adminSettingsCallout).should("be.visible"); //cy.get(adminsSettings.adminSettingsCallout).should("be.visible");
// go to email settings // go to email settings
cy.get(adminsSettings.emailTab).click(); cy.get(adminsSettings.emailTab).click();
// add email settings // add email settings
@ -67,8 +70,11 @@ describe("Email verification", () => {
}); });
// save // save
cy.get(adminsSettings.saveButton).click(); cy.get(adminsSettings.saveButton).click();
cy.waitForServerRestart();
cy.waitUntil(() => cy.waitUntil(() =>
cy.contains("General", { timeout: 180000 }).should("be.visible"), cy.contains("General", { timeout: 210000 }).should("be.visible"),
).then(() => { ).then(() => {
cy.wait("@getEnvVariables"); cy.wait("@getEnvVariables");
cy.get(adminsSettings.authenticationTab).click(); cy.get(adminsSettings.authenticationTab).click();
@ -92,6 +98,8 @@ describe("Email verification", () => {
cy.get(adminsSettings.emailTab).click(); cy.get(adminsSettings.emailTab).click();
// remove email settings // remove email settings
cy.get(adminsSettings.saveButton).click(); cy.get(adminsSettings.saveButton).click();
cy.waitForServerRestart();
cy.waitUntil(() => cy.waitUntil(() =>
cy.contains("General", { timeout: 180000 }).should("be.visible"), cy.contains("General", { timeout: 180000 }).should("be.visible"),
).then(() => { ).then(() => {

View File

@ -1,52 +1,44 @@
import homePage from "../../../../../locators/HomePage"; import homePage from "../../../../../locators/HomePage";
import gitSyncLocators from "../../../../../locators/gitSyncLocators"; import gitSyncLocators from "../../../../../locators/gitSyncLocators";
import * as _ from "../../../../../support/Objects/ObjectsCore";
import {
agHelper,
entityExplorer,
homePage,
gitSync,
} from "../../../../../support/Objects/ObjectsCore";
let repoName, branchName; let repoName, branchName;
// skipping this test as it gets stuck in CI, need to triage describe("Delete branch flow", () => {
describe.skip("Delete branch flow", () => {
it("1. Connect app to git, create new branch and delete it", () => { it("1. Connect app to git, create new branch and delete it", () => {
// create git repo and connect app to git // create git repo and connect app to git
_.gitSync.CreateNConnectToGit(); gitSync.CreateNConnectToGit();
cy.get("@gitRepoName").then((repName) => { cy.get("@gitRepoName").then((repName) => {
repoName = repName; repoName = repName;
}); });
_.gitSync.CreateGitBranch(); gitSync.CreateGitBranch();
//cy.createGitBranch(branchName); //cy.createGitBranch(branchName);
cy.wait(1000); cy.wait(1000);
// verify can not delete the checked out branch // verify can not delete the checked out branch
cy.get(gitSyncLocators.branchButton).click(); DeleteBranchFromUI(1);
cy.get(gitSyncLocators.branchListItem)
.eq(1)
.trigger("mouseenter")
.within(() => {
cy.get(gitSyncLocators.gitBranchContextMenu).click();
cy.get(gitSyncLocators.gitBranchDelete).click();
});
cy.get("@gitbranchName").then((branName) => { cy.get("@gitbranchName").then((branName) => {
branchName = branName; branchName = branName;
cy.get(homePage.toastMessage).should( cy.get(homePage.toastMessage).should(
"contain", "contain",
`Cannot delete checked out branch. Please check out other branch before deleting ${branchName}.`, `Cannot delete checked out branch. Please check out other branch before deleting ${branchName}.`,
); );
cy.get(gitSyncLocators.closeBranchList).click(); cy.get(gitSyncLocators.closeBranchList).click({ force: true });
// switch to master and delete new branch created // switch to master and delete new branch created
cy.switchGitBranch("master"); cy.switchGitBranch("master");
cy.wait(2000); cy.wait(2000);
cy.get(gitSyncLocators.branchButton).click();
cy.get(gitSyncLocators.branchListItem) DeleteBranchFromUI(1);
.eq(1)
.trigger("mouseenter")
.within(() => {
cy.get(gitSyncLocators.gitBranchContextMenu).click();
cy.get(gitSyncLocators.gitBranchDelete).click();
});
cy.wait("@deleteBranch").should( cy.wait("@deleteBranch").should(
"have.nested.property", "have.nested.property",
"response.body.responseMeta.status", "response.body.responseMeta.status",
200, 200,
); );
cy.get(gitSyncLocators.closeBranchList).click(); cy.get(gitSyncLocators.closeBranchList).click({ force: true });
// verify remote branch is there for the deleted local branch // verify remote branch is there for the deleted local branch
cy.wait(2000); cy.wait(2000);
cy.switchGitBranch(`origin/${branchName}`); cy.switchGitBranch(`origin/${branchName}`);
@ -56,38 +48,33 @@ describe.skip("Delete branch flow", () => {
it("2. Create child branch, merge data from child branch, delete child branch verify the data should reflect in master ", () => { it("2. Create child branch, merge data from child branch, delete child branch verify the data should reflect in master ", () => {
cy.switchGitBranch("master"); cy.switchGitBranch("master");
_.gitSync.CreateGitBranch("", true); gitSync.CreateGitBranch("", true);
cy.wait(1000); cy.wait(1000);
_.entityExplorer.NavigateToSwitcher("Widgets"); entityExplorer.NavigateToSwitcher("Widgets");
cy.dragAndDropToCanvas("checkboxwidget", { x: 100, y: 200 }); cy.dragAndDropToCanvas("checkboxwidget", { x: 100, y: 200 });
cy.get(".t--draggable-checkboxwidget").should("exist"); cy.get(".t--draggable-checkboxwidget").should("exist");
cy.wait(2000); cy.wait(2000);
cy.commitAndPush(); cy.commitAndPush();
cy.merge("master"); cy.merge("master");
cy.get(".t--close-git-sync-modal").click(); gitSync.CloseGitSyncModal();
cy.switchGitBranch("master"); cy.switchGitBranch("master");
cy.wait(2000); cy.wait(2000);
cy.get(gitSyncLocators.branchButton).click();
cy.get(gitSyncLocators.branchListItem) DeleteBranchFromUI(1);
.eq(1)
.trigger("mouseenter")
.within(() => {
cy.get(gitSyncLocators.gitBranchContextMenu).click();
cy.get(gitSyncLocators.gitBranchDelete).click();
});
cy.wait("@deleteBranch").should( cy.wait("@deleteBranch").should(
"have.nested.property", "have.nested.property",
"response.body.responseMeta.status", "response.body.responseMeta.status",
200, 200,
); );
cy.get(gitSyncLocators.closeBranchList).click(); cy.get(gitSyncLocators.closeBranchList).click({ force: true });
cy.get(".t--draggable-checkboxwidget").should("be.visible"); cy.get(".t--draggable-checkboxwidget").should("be.visible");
}); });
it("3. Create new branch, commit data in that branch , delete the branch, verify data should not reflect in master ", () => { it("3. Create new branch, commit data in that branch , delete the branch, verify data should not reflect in master ", () => {
_.gitSync.CreateGitBranch("", true); gitSync.CreateGitBranch("", true);
cy.wait(1000); cy.wait(1000);
_.entityExplorer.NavigateToSwitcher("Widgets"); entityExplorer.NavigateToSwitcher("Widgets");
cy.dragAndDropToCanvas("chartwidget", { x: 210, y: 300 }); cy.dragAndDropToCanvas("chartwidget", { x: 210, y: 300 });
cy.get(".t--widget-chartwidget").should("exist"); cy.get(".t--widget-chartwidget").should("exist");
cy.wait(2000); cy.wait(2000);
@ -95,40 +82,39 @@ describe.skip("Delete branch flow", () => {
cy.wait(1000); cy.wait(1000);
cy.switchGitBranch("master"); cy.switchGitBranch("master");
cy.wait(3000); cy.wait(3000);
cy.get(gitSyncLocators.branchButton).click();
cy.get(gitSyncLocators.branchListItem) DeleteBranchFromUI(1);
.eq(1)
.trigger("mouseenter")
.within(() => {
cy.wait(1000);
cy.get(gitSyncLocators.gitBranchContextMenu).click();
cy.wait(1000);
cy.get(gitSyncLocators.gitBranchDelete).click();
});
cy.wait("@deleteBranch").should( cy.wait("@deleteBranch").should(
"have.nested.property", "have.nested.property",
"response.body.responseMeta.status", "response.body.responseMeta.status",
200, 200,
); );
cy.get(".--widget-chartwidget").should("not.exist"); cy.get(".--widget-chartwidget").should("not.exist");
cy.get(gitSyncLocators.closeBranchList).click({ force: true });
}); });
/*it("4. Verify Default branch deletion not allowed ", () => {
cy.get(".t--branch-item") it("4. Verify Default branch deletion not allowed ", () => {
.eq(0) agHelper.WaitUntilAllToastsDisappear();
.click() DeleteBranchFromUI(0);
cy.get(gitSyncLocators.closeBranchList).click({ force: true });
agHelper.ValidateToastMessage("Cannot delete default branch: master");
});
function DeleteBranchFromUI(index = 1) {
cy.get(gitSyncLocators.branchButton).click();
cy.get(gitSyncLocators.branchListItem)
.eq(index)
.trigger("mouseenter") .trigger("mouseenter")
.within(() => { .wait(1000);
cy.get(".git-branch-more-menu").click({ force: true }); cy.get(gitSyncLocators.gitBranchContextMenu).click({ force: true });
cy.get(".t--branch-more-menu-delete").click(); cy.xpath("//div[@role='menu']//span[text()='Delete']")
}); .should("be.visible")
cy.get(homePage.toastMessage).should( .click({ force: true });
"contain", }
"Cannot delete default branch: master",
);
}); */
after(() => { after(() => {
//clean up //clean up
_.gitSync.DeleteTestGithubRepo(repoName); gitSync.DeleteTestGithubRepo(repoName);
}); });
}); });

View File

@ -13,17 +13,18 @@ const queryLocators = require("../../../../locators/QueryEditor.json");
describe("MaintainContext&Focus", function () { describe("MaintainContext&Focus", function () {
before("Import the test application", () => { before("Import the test application", () => {
homePage.NavigateToHome(); homePage.CreateNewWorkspace("MaintainContext&Focus", true);
homePage.ImportApp("ContextSwitching.json"); homePage.ImportApp("ContextSwitching.json");
cy.wait("@importNewApplication").then((interception) => { cy.wait("@importNewApplication").then((interception) => {
agHelper.Sleep(); agHelper.Sleep();
const { isPartialImport } = interception.response.body.data; const { isPartialImport } = interception.response.body.data;
cy.log("isPartialImport is", isPartialImport);
if (isPartialImport) { if (isPartialImport) {
// should reconnect modal // should reconnect modal
cy.get("body").then(($ele) => { cy.get("body").then(($ele) => {
if ($ele.find(reconnectDatasourceModal.SkipToAppBtn)) if ($ele.find(reconnectDatasourceModal.SkipToAppBtn))
agHelper.GetNClick(reconnectDatasourceModal.SkipToAppBtn, 0, true); agHelper.GetNClick(reconnectDatasourceModal.SkipToAppBtn, 0, true);
else agHelper.GetNClick(homePage._importSuccessModalGotit, 0, true); else agHelper.ClickButton("Got it");
agHelper.Sleep(2000); agHelper.Sleep(2000);
}); });
} else { } else {

View File

@ -88,8 +88,8 @@ describe("Theme validation usecase for multi-select widget", function () {
appSettings.ClosePane(); appSettings.ClosePane();
}); });
//Skipping due to mentioned bug
it.skip("2. Publish the App and validate Font across the app + Bug 15007", function () { it.skip("2. Publish the App and validate Font across the app + Bug 15007", function () {
//Skipping due to mentioned bug
deployMode.DeployApp(); deployMode.DeployApp();
cy.get(".rc-select-selection-item > .rc-select-selection-item-content") cy.get(".rc-select-selection-item > .rc-select-selection-item-content")
.first() .first()

View File

@ -230,7 +230,7 @@ describe("Checkbox Tests", function () {
agHelper.AssertElementVisibility(propPane._colorPickerV2Color); agHelper.AssertElementVisibility(propPane._colorPickerV2Color);
// Verify full color picker // Verify full color picker
agHelper.AssertAttribute(propPane._colorPickerInput, "type", "text", 0); agHelper.AssertAttribute(propPane._colorPickerInput, "type", "text", 0);
propPane.TogglePropertyState("fontcolor", "On", "updateLayout", false); propPane.TogglePropertyState("fontcolor", "On", "");
agHelper.AssertAttribute(propPane._colorPickerInput, "type", "color", 0); agHelper.AssertAttribute(propPane._colorPickerInput, "type", "color", 0);
// Font size // Font size
propPane.SelectPropertiesDropDown("fontsize", "L"); propPane.SelectPropertiesDropDown("fontsize", "L");
@ -280,7 +280,7 @@ describe("Checkbox Tests", function () {
); );
// Verify full color picker for accent color // Verify full color picker for accent color
agHelper.AssertAttribute(propPane._colorPickerInput, "type", "text", 1); agHelper.AssertAttribute(propPane._colorPickerInput, "type", "text", 1);
propPane.TogglePropertyState("accentcolor", "On", "updateLayout", false); propPane.TogglePropertyState("accentcolor", "On", "");
agHelper.AssertAttribute(propPane._colorPickerInput, "type", "color", 1); agHelper.AssertAttribute(propPane._colorPickerInput, "type", "color", 1);
// Verify border // Verify border

View File

@ -51,7 +51,7 @@ describe("Code scanner widget tests", () => {
propPane.TogglePropertyState("Disabled", "Off"); propPane.TogglePropertyState("Disabled", "Off");
//Animate loading property - JS convertible //Animate loading property - JS convertible
agHelper.AssertExistingToggleState("animateloading", "true"); agHelper.AssertExistingToggleState("Animate loading", "true");
propPane.EnterJSContext( propPane.EnterJSContext(
"Animate loading", "Animate loading",
"{{(45>55)?false:true}}", "{{(45>55)?false:true}}",
@ -63,8 +63,8 @@ describe("Code scanner widget tests", () => {
"{{(45>55)?false:true}}", "{{(45>55)?false:true}}",
); );
propPane.EnterJSContext("Animate loading", "", false); propPane.EnterJSContext("Animate loading", "", false);
propPane.ToggleJSMode("animateloading", false); propPane.ToggleJSMode("Animate loading", false);
propPane.TogglePropertyState("animateloading", "On"); propPane.TogglePropertyState("Animate loading", "On");
}); });
it( it(
@ -135,7 +135,7 @@ describe("Code scanner widget tests", () => {
propPane.TogglePropertyState("Disabled", "Off"); propPane.TogglePropertyState("Disabled", "Off");
//Animate loading property - JS convertible //Animate loading property - JS convertible
agHelper.AssertExistingToggleState("animateloading", "true"); agHelper.AssertExistingToggleState("Animate loading", "true");
propPane.EnterJSContext( propPane.EnterJSContext(
"Animate loading", "Animate loading",
"{{(45>55)?false:true}}", "{{(45>55)?false:true}}",
@ -147,7 +147,7 @@ describe("Code scanner widget tests", () => {
"{{(45>55)?false:true}}", "{{(45>55)?false:true}}",
); );
propPane.EnterJSContext("Animate loading", "", false, true); propPane.EnterJSContext("Animate loading", "", false, true);
propPane.ToggleJSMode("animateloading", false); propPane.ToggleJSMode("Animate loading", false);
// Text & tooltip properties // Text & tooltip properties
agHelper.AssertElementVisibility(widgetLocators.codeScannerScanButton); agHelper.AssertElementVisibility(widgetLocators.codeScannerScanButton);

View File

@ -308,7 +308,7 @@ describe("CUrrency Input widget Tests", function () {
agHelper.AssertElementVisibility(propPane._colorPickerV2Color); agHelper.AssertElementVisibility(propPane._colorPickerV2Color);
// Verify full color picker // Verify full color picker
agHelper.AssertAttribute(propPane._colorPickerInput, "type", "text", 0); agHelper.AssertAttribute(propPane._colorPickerInput, "type", "text", 0);
propPane.TogglePropertyState("fontcolor", "On", "updateLayout", false); propPane.TogglePropertyState("fontcolor", "On", "");
agHelper.AssertAttribute(propPane._colorPickerInput, "type", "color", 0); agHelper.AssertAttribute(propPane._colorPickerInput, "type", "color", 0);
// Font size // Font size
propPane.SelectPropertiesDropDown("fontsize", "L"); propPane.SelectPropertiesDropDown("fontsize", "L");

View File

@ -120,6 +120,7 @@ describe("List v2 - Data Identifier property", () => {
}); });
it("7. Widgets get displayed when PrimaryKey doesn't exist - SSP", () => { it("7. Widgets get displayed when PrimaryKey doesn't exist - SSP", () => {
agHelper.AddDsl("Listv2/ListV2WithNullPrimaryKey");
agHelper.AddDsl("Listv2/ListV2WithNullPrimaryKey"); agHelper.AddDsl("Listv2/ListV2WithNullPrimaryKey");
apiPage.CreateAndFillApi( apiPage.CreateAndFillApi(
"https://api.punkapi.com/v2/beers?page={{List1.pageNo}}&per_page={{List1.pageSize}}", "https://api.punkapi.com/v2/beers?page={{List1.pageNo}}&per_page={{List1.pageSize}}",

View File

@ -218,8 +218,7 @@ describe("Verify various Table_Filter combinations", function () {
_.table.RemoveFilterNVerify("2381224", true, false); _.table.RemoveFilterNVerify("2381224", true, false);
}); });
//Skipping until bug closed it("8. Verify Table Filter for changing from AND -> OR [Remove a filter] -> AND + Bug 12642", function () {
it.skip("8. Verify Table Filter for changing from AND -> OR [Remove a filter] -> AND + Bug 12642", function () {
_.table.OpenNFilterTable("id", "contains", "7"); _.table.OpenNFilterTable("id", "contains", "7");
_.table.ReadTableRowColumnData(1, 4).then(($cellData) => { _.table.ReadTableRowColumnData(1, 4).then(($cellData) => {
expect($cellData).to.eq("Beef steak"); expect($cellData).to.eq("Beef steak");
@ -241,11 +240,7 @@ describe("Verify various Table_Filter combinations", function () {
expect($cellData).to.eq("Tuna Salad"); expect($cellData).to.eq("Tuna Salad");
}); });
_.table.RemoveFilterNVerify("2381224", false, true, 0); //Verifies bug 12642 _.table.RemoveFilterNVerify("7434532", false, true, 0); //Since TableV1 - revertion of operator upon removal of filter is not supported
_.agHelper.GetNClick(_.table._filterOperatorDropdown);
cy.get(_.table._dropdownText).contains("AND").click();
_.agHelper.ClickButton("APPLY");
_.table.ReadTableRowColumnData(0, 4).then(($cellData) => { _.table.ReadTableRowColumnData(0, 4).then(($cellData) => {
expect($cellData).to.eq("Avocado Panini"); expect($cellData).to.eq("Avocado Panini");

View File

@ -229,8 +229,7 @@ describe("Verify various Table_Filter combinations", function () {
table.RemoveFilterNVerify("2381224", true, false, 0, "v2"); table.RemoveFilterNVerify("2381224", true, false, 0, "v2");
}); });
//Skipping until bug closed it("8. Verify Table Filter for changing from AND -> OR [Remove a filter] -> AND + Bug 12642", function () {
it.skip("8. Verify Table Filter for changing from AND -> OR [Remove a filter] -> AND + Bug 12642", function () {
table.OpenNFilterTable("id", "contains", "7"); table.OpenNFilterTable("id", "contains", "7");
table.ReadTableRowColumnData(1, 4, "v2").then(($cellData) => { table.ReadTableRowColumnData(1, 4, "v2").then(($cellData) => {
expect($cellData).to.eq("Beef steak"); expect($cellData).to.eq("Beef steak");

View File

@ -55,7 +55,7 @@ describe("Table Widget V2 property pane feature validation", function () {
cy.editColumn("id"); cy.editColumn("id");
const color1 = "rgb(255, 0, 0)"; const color1 = "rgb(255, 0, 0)";
cy.moveToStyleTab(); cy.moveToStyleTab();
cy.get(widgetsPage.buttonColor).click({ force: true }).clear().type(color1); propPane.EnterJSContext("Button color", color1);
cy.get(widgetsPage.tableV2Btn).should( cy.get(widgetsPage.tableV2Btn).should(
"have.css", "have.css",
"background-color", "background-color",
@ -64,31 +64,23 @@ describe("Table Widget V2 property pane feature validation", function () {
// Changing the color again to reproduce issue #9526 // Changing the color again to reproduce issue #9526
const color2 = "rgb(255, 255, 0)"; const color2 = "rgb(255, 255, 0)";
cy.get(widgetsPage.buttonColor) propPane.EnterJSContext("Button color", color2);
.click({ force: true })
.clear()
// following wait is required to reproduce #9526
.wait(600)
.type(color2);
cy.get(widgetsPage.tableV2Btn).should( cy.get(widgetsPage.tableV2Btn).should(
"have.css", "have.css",
"background-color", "background-color",
color2, color2,
); ); //verifying Bug #9526 - color is not reverted back to default
}); //Table widget triggeredRow property should be accessible", function () {
it("3. Table widget triggeredRow property should be accessible", function () {
cy.get(commonlocators.TextInside).should("have.text", "Tobias Funke"); cy.get(commonlocators.TextInside).should("have.text", "Tobias Funke");
}); // Table widget triggeredRow property should be same even after sorting the table", function () {
it("4. Table widget triggeredRow property should be same even after sorting the table", function () {
//sort table date on second column //sort table date on second column
cy.get(".draggable-header ").first().click({ force: true }); cy.get(".draggable-header ").first().click({ force: true });
cy.wait(1000); cy.wait(1000);
cy.get(commonlocators.TextInside).should("have.text", "Tobias Funke"); cy.get(commonlocators.TextInside).should("have.text", "Tobias Funke");
}); });
it("5. Table widget add new icon button column", function () { it("3. Table widget add new icon button column", function () {
cy.get("[data-testid='t--property-pane-back-btn']").click({ force: true }); cy.get("[data-testid='t--property-pane-back-btn']").click({ force: true });
// hide id column // hide id column
cy.makeColumnVisible("id"); cy.makeColumnVisible("id");
@ -123,7 +115,7 @@ describe("Table Widget V2 property pane feature validation", function () {
cy.deleteColumn("customColumn1"); cy.deleteColumn("customColumn1");
}); });
it("6. Table widget add new menu button column", function () { it("4. Table widget add new menu button column", function () {
cy.openPropertyPane("tablewidgetv2"); cy.openPropertyPane("tablewidgetv2");
// click on Add new Column. // click on Add new Column.
cy.get(".t--add-column-btn").click(); cy.get(".t--add-column-btn").click();
@ -279,7 +271,7 @@ describe("Table Widget V2 property pane feature validation", function () {
}); });
}); });
it("7. Table widget test on button icon click, row should not get deselected", () => { it("5. Table widget test on button icon click, row should not get deselected", () => {
cy.get(widgetsPage.tableV2IconBtn).last().click({ force: true }); cy.get(widgetsPage.tableV2IconBtn).last().click({ force: true });
cy.get(commonlocators.TextInside).should("have.text", "Tobias Funke"); cy.get(commonlocators.TextInside).should("have.text", "Tobias Funke");
//click icon button again //click icon button again

View File

@ -204,7 +204,7 @@ function GenerateCRUDNValidateDeployPage(
agHelper.AssertContains("Successfully generated a page"); // Commenting this since FindQuery failure appears sometimes agHelper.AssertContains("Successfully generated a page"); // Commenting this since FindQuery failure appears sometimes
assertHelper.AssertNetworkStatus("@getActions", 200); assertHelper.AssertNetworkStatus("@getActions", 200);
assertHelper.AssertNetworkStatus("@postExecute", 200); assertHelper.AssertNetworkStatus("@postExecute", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it")); agHelper.ClickButton("Got it");
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
appSettings.OpenPaneAndChangeTheme("Pacific"); appSettings.OpenPaneAndChangeTheme("Pacific");
deployMode.DeployApp(locators._widgetInDeployed("tablewidget")); deployMode.DeployApp(locators._widgetInDeployed("tablewidget"));

View File

@ -96,7 +96,7 @@ describe("Validate Mongo CRUD with JSON Form", () => {
agHelper.AssertContains("Successfully generated a page"); // Commenting this since FindQuery failure appears sometimes agHelper.AssertContains("Successfully generated a page"); // Commenting this since FindQuery failure appears sometimes
assertHelper.AssertNetworkStatus("@getActions", 200); assertHelper.AssertNetworkStatus("@getActions", 200);
assertHelper.AssertNetworkStatus("@postExecute", 200); assertHelper.AssertNetworkStatus("@postExecute", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it")); agHelper.ClickButton("Got it");
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
deployMode.DeployApp(locators._widgetInDeployed("tablewidget")); deployMode.DeployApp(locators._widgetInDeployed("tablewidget"));

View File

@ -178,7 +178,7 @@ describe("Validate MySQL Generate CRUD with JSON Form", () => {
assertHelper.AssertNetworkStatus("@replaceLayoutWithCRUDPage", 201); assertHelper.AssertNetworkStatus("@replaceLayoutWithCRUDPage", 201);
assertHelper.AssertNetworkStatus("@getActions", 200); assertHelper.AssertNetworkStatus("@getActions", 200);
assertHelper.AssertNetworkStatus("@postExecute", 200); assertHelper.AssertNetworkStatus("@postExecute", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it")); agHelper.ClickButton("Got it");
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
deployMode.DeployApp(locators._widgetInDeployed("tablewidget")); deployMode.DeployApp(locators._widgetInDeployed("tablewidget"));
@ -218,42 +218,43 @@ describe("Validate MySQL Generate CRUD with JSON Form", () => {
dataSources.AssertJSONFormHeader(0, 0, "productLine"); dataSources.AssertJSONFormHeader(0, 0, "productLine");
}); });
it.skip("6. Verify Update/Delete row/Delete field data from Deploy page - on Productlines - existing record + Bug 14063", () => { //Open Bug 14063 - hence skipping
entityExplorer.SelectEntityByName("update_form", "Widgets"); // it.skip("6. Verify Update/Delete row/Delete field data from Deploy page - on Productlines - existing record + Bug 14063", () => {
propPane.ChangeJsonFormFieldType( // entityExplorer.SelectEntityByName("update_form", "Widgets");
"Text Description", // propPane.ChangeJsonFormFieldType(
"Multiline Text Input", // "Text Description",
); // "Multiline Text Input",
propPane.NavigateBackToPropertyPane(); // );
propPane.ChangeJsonFormFieldType( // propPane.NavigateBackToPropertyPane();
"Html Description", // propPane.ChangeJsonFormFieldType(
"Multiline Text Input", // "Html Description",
); // "Multiline Text Input",
propPane.NavigateBackToPropertyPane(); // );
deployMode.DeployApp(); // propPane.NavigateBackToPropertyPane();
table.SelectTableRow(0, 0, false); //to make JSON form hidden // deployMode.DeployApp();
agHelper.AssertElementAbsence(locators._jsonFormWidget); // table.SelectTableRow(0, 0, false); //to make JSON form hidden
table.SelectTableRow(3); // agHelper.AssertElementAbsence(locators._jsonFormWidget);
agHelper.AssertElementVisibility(locators._jsonFormWidget); // table.SelectTableRow(3);
// agHelper.AssertElementVisibility(locators._jsonFormWidget);
dataSources.AssertJSONFormHeader(3, 0, "productLine"); // dataSources.AssertJSONFormHeader(3, 0, "productLine");
deployMode.EnterJSONTextAreaValue( // deployMode.EnterJSONTextAreaValue(
"Html Description", // "Html Description",
"The largest cruise ship is twice the length of the Washington Monument. Some cruise ships have virtual balconies.", // "The largest cruise ship is twice the length of the Washington Monument. Some cruise ships have virtual balconies.",
); // );
agHelper.ClickButton("Update"); //Update does not work, Bug 14063 // agHelper.ClickButton("Update"); //Update does not work, Bug 14063
agHelper.AssertElementAbsence(locators._toastMsg); //Validating fix for Bug 14063 // agHelper.AssertElementAbsence(locators._toastMsg); //Validating fix for Bug 14063
assertHelper.AssertNetworkStatus("@postExecute", 200); // assertHelper.AssertNetworkStatus("@postExecute", 200);
table.AssertSelectedRow(3); // table.AssertSelectedRow(3);
//validating update happened fine! // //validating update happened fine!
table.ReadTableRowColumnData(3, 2, "v1", 200).then(($cellData) => { // table.ReadTableRowColumnData(3, 2, "v1", 200).then(($cellData) => {
expect($cellData).to.eq( // expect($cellData).to.eq(
"The largest cruise ship is twice the length of the Washington Monument. Some cruise ships have virtual balconies.", // "The largest cruise ship is twice the length of the Washington Monument. Some cruise ships have virtual balconies.",
); // );
}); // });
}); // });
// it.skip("7. Verify Add/Update/Delete from Deploy page - on Productlines - new record + Bug 14063", () => { // it.skip("7. Verify Add/Update/Delete from Deploy page - on Productlines - new record + Bug 14063", () => {
// //To script aft bug fix! // //To script aft bug fix!
@ -323,7 +324,7 @@ describe("Validate MySQL Generate CRUD with JSON Form", () => {
agHelper.AssertContains("Successfully generated a page"); agHelper.AssertContains("Successfully generated a page");
//assertHelper.AssertNetworkStatus("@getActions", 200);//Since failing sometimes //assertHelper.AssertNetworkStatus("@getActions", 200);//Since failing sometimes
assertHelper.AssertNetworkStatus("@postExecute", 200); assertHelper.AssertNetworkStatus("@postExecute", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it")); agHelper.ClickButton("Got it");
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
deployMode.DeployApp(locators._widgetInDeployed("tablewidget")); deployMode.DeployApp(locators._widgetInDeployed("tablewidget"));
table.WaitUntilTableLoad(); table.WaitUntilTableLoad();

View File

@ -397,7 +397,7 @@ describe("Validate MySQL Generate CRUD with JSON Form", () => {
agHelper.AssertContains("Successfully generated a page"); agHelper.AssertContains("Successfully generated a page");
//assertHelper.AssertNetworkStatus("@getActions", 200);//Since failing sometimes //assertHelper.AssertNetworkStatus("@getActions", 200);//Since failing sometimes
assertHelper.AssertNetworkStatus("@postExecute", 200); assertHelper.AssertNetworkStatus("@postExecute", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it")); agHelper.ClickButton("Got it");
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
deployMode.DeployApp(locators._widgetInDeployed("tablewidget")); deployMode.DeployApp(locators._widgetInDeployed("tablewidget"));
table.WaitUntilTableLoad(); table.WaitUntilTableLoad();

View File

@ -130,7 +130,7 @@ describe("Postgres Generate CRUD with JSON Form", () => {
agHelper.AssertContains("Successfully generated a page"); agHelper.AssertContains("Successfully generated a page");
//assertHelper.AssertNetworkStatus("@getActions", 200);//Since failing sometimes //assertHelper.AssertNetworkStatus("@getActions", 200);//Since failing sometimes
assertHelper.AssertNetworkStatus("@postExecute", 200); assertHelper.AssertNetworkStatus("@postExecute", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it")); agHelper.ClickButton("Got it");
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
deployMode.DeployApp(locators._widgetInDeployed("tablewidget")); deployMode.DeployApp(locators._widgetInDeployed("tablewidget"));

View File

@ -93,7 +93,7 @@ describe("Validate Postgres Generate CRUD with JSON Form", () => {
assertHelper.AssertNetworkStatus("@replaceLayoutWithCRUDPage", 201); assertHelper.AssertNetworkStatus("@replaceLayoutWithCRUDPage", 201);
assertHelper.AssertNetworkStatus("@getActions", 200); assertHelper.AssertNetworkStatus("@getActions", 200);
assertHelper.AssertNetworkStatus("@postExecute", 200); assertHelper.AssertNetworkStatus("@postExecute", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it")); agHelper.ClickButton("Got it");
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
deployMode.DeployApp(locators._widgetInDeployed("tablewidget")); deployMode.DeployApp(locators._widgetInDeployed("tablewidget"));

View File

@ -72,7 +72,7 @@ describe("Tests fetch calls", () => {
agHelper.AssertContains("anonymousUser", "exist"); agHelper.AssertContains("anonymousUser", "exist");
}); });
it.skip("3. Tests if fetch works with store value", function () { it("3. Tests if fetch works with store value", function () {
entityExplorer.NavigateToSwitcher("Widgets"); entityExplorer.NavigateToSwitcher("Widgets");
entityExplorer.DragDropWidgetNVerify("buttonwidget", 500, 200); entityExplorer.DragDropWidgetNVerify("buttonwidget", 500, 200);
entityExplorer.SelectEntityByName("Button1"); entityExplorer.SelectEntityByName("Button1");

View File

@ -10,12 +10,12 @@ import {
assertHelper, assertHelper,
} from "../../../../support/Objects/ObjectsCore"; } from "../../../../support/Objects/ObjectsCore";
describe.skip("Binary Datatype tests", function () { describe("Binary Datatype tests", function () {
let dsName: any, query: string, imageNameToUpload: string; let dsName: any, query: string, imageNameToUpload: string;
before("Create DS, Importing App & setting theme", () => { before("Create DS, Importing App & setting theme", () => {
agHelper.AddDsl("Datatypes/BinaryDTdsl"); agHelper.AddDsl("Datatypes/BinaryDTdsl");
appSettings.OpenPaneAndChangeThemeColors(24, -37); appSettings.OpenPaneAndChangeThemeColors(7, -9);
dataSources.CreateDataSource("Postgres"); dataSources.CreateDataSource("Postgres");
cy.get("@dsName").then(($dsName) => { cy.get("@dsName").then(($dsName) => {
dsName = $dsName; dsName = $dsName;
@ -378,6 +378,7 @@ describe.skip("Binary Datatype tests", function () {
entityExplorer.ExpandCollapseEntity("Queries/JS", false); entityExplorer.ExpandCollapseEntity("Queries/JS", false);
}); });
//Since query delete & Postgress DS delete is covered in other specs, commenting below code
// after( // after(
// "Validate Drop of the Newly Created - binarytype - Table & Verify Deletion of all created queries", // "Validate Drop of the Newly Created - binarytype - Table & Verify Deletion of all created queries",
// () => { // () => {

View File

@ -4,14 +4,12 @@ import {
locators, locators,
agHelper, agHelper,
} from "../../../../support/Objects/ObjectsCore"; } from "../../../../support/Objects/ObjectsCore";
const datasource = require("../../../../locators/DatasourcesEditor.json"); import datasource from "../../../../locators/DatasourcesEditor.json";
describe( describe(
"excludeForAirgap", "excludeForAirgap",
"Google Sheets datasource row objects placeholder", "Google Sheets datasource row objects placeholder",
function () { function () {
let queryName;
let datasourceName;
let pluginName = "Google Sheets"; let pluginName = "Google Sheets";
let placeholderText = let placeholderText =
'{\n "name": {{nameInput.text}},\n "dob": {{dobPicker.formattedDate}},\n "gender": {{genderSelect.selectedOptionValue}} \n}'; '{\n "name": {{nameInput.text}},\n "dob": {{dobPicker.formattedDate}},\n "gender": {{genderSelect.selectedOptionValue}} \n}';
@ -54,6 +52,28 @@ describe(
//}); //});
}); });
it("1. Verify GSheets dropdown options", function () {
dataSources.NavigateToDSCreateNew();
dataSources.CreatePlugIn("Google Sheets");
VerifyFunctionDropdown([
"Read / Write / Delete | Selected google sheets",
"Read / Write / Delete | All google sheets",
"Read / Write | All google sheets",
"Read | All google sheets",
]);
dataSources.SaveDSFromDialog(false);
});
function VerifyFunctionDropdown(scopeOptions: string[]) {
agHelper.GetNClick(dataSources._gsScopeDropdown);
cy.get(dataSources._gsScopeOptions).then(function ($ele) {
expect($ele.eq(0).text()).to.be.oneOf(scopeOptions);
expect($ele.eq(1).text()).to.be.oneOf(scopeOptions);
expect($ele.eq(2).text()).to.be.oneOf(scopeOptions);
});
agHelper.GetNClick(dataSources._gsScopeDropdown);
}
it("2. Bug # 25004 - Verify Google Sheets documentation opens", function () { it("2. Bug # 25004 - Verify Google Sheets documentation opens", function () {
dataSources.NavigateToDSCreateNew(); dataSources.NavigateToDSCreateNew();
dataSources.CreatePlugIn(pluginName); dataSources.CreatePlugIn(pluginName);

View File

@ -862,7 +862,7 @@ describe("Validate Mongo Query Pane Validations", () => {
assertHelper.AssertNetworkStatus("@postExecute", 200); assertHelper.AssertNetworkStatus("@postExecute", 200);
assertHelper.AssertNetworkStatus("@updateLayout", 200); assertHelper.AssertNetworkStatus("@updateLayout", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it")); agHelper.ClickButton("Got it");
deployMode.DeployApp(); deployMode.DeployApp();
//Validating loaded table //Validating loaded table

View File

@ -1,29 +0,0 @@
import { agHelper, dataSources } from "../../../support/Objects/ObjectsCore";
describe(
"excludeForAirgap",
"Google Sheets datasource test cases",
function () {
it("1. Create Google Sheets datasource", function () {
dataSources.NavigateToDSCreateNew();
dataSources.CreatePlugIn("Google Sheets");
VerifyFunctionDropdown([
"Read / Write / Delete | Selected google sheets",
"Read / Write / Delete | All google sheets",
"Read / Write | All google sheets",
"Read | All google sheets",
]);
dataSources.SaveDSFromDialog(false);
});
function VerifyFunctionDropdown(scopeOptions: string[]) {
agHelper.GetNClick(dataSources._gsScopeDropdown);
cy.get(dataSources._gsScopeOptions).then(function ($ele) {
expect($ele.eq(0).text()).to.be.oneOf(scopeOptions);
expect($ele.eq(1).text()).to.be.oneOf(scopeOptions);
expect($ele.eq(2).text()).to.be.oneOf(scopeOptions);
});
agHelper.GetNClick(dataSources._gsScopeDropdown);
}
},
);

View File

@ -1,7 +1,8 @@
# To run only limited tests - give the spec names in below format: # To run only limited tests - give the spec names in below format:
cypress/e2e/Regression/ClientSide/Widgets/Checkbox/CheckBoxGroupTest.ts cypress/e2e/Regression/ClientSide/Templates/Fork_Template_spec.js
# For running all specs - uncomment below: # For running all specs - uncomment below:
# cypress/e2e/**/**/* #cypress/e2e/**/**/*
#ci-test-limit uses this file to run minimum of specs. Do not run entire suite with this command. #ci-test-limit uses this file to run minimum of specs. Do not run entire suite with this command.

View File

@ -26,7 +26,7 @@
"@typescript-eslint/parser": "^5.25.0", "@typescript-eslint/parser": "^5.25.0",
"chalk": "^4.1.1", "chalk": "^4.1.1",
"cy-verify-downloads": "^0.0.5", "cy-verify-downloads": "^0.0.5",
"cypress": "^12.17.4", "cypress": "^13.0.0",
"cypress-file-upload": "^4.1.1", "cypress-file-upload": "^4.1.1",
"cypress-image-snapshot": "^4.0.1", "cypress-image-snapshot": "^4.0.1",
"cypress-log-to-output": "^1.1.2", "cypress-log-to-output": "^1.1.2",

View File

@ -78,7 +78,7 @@ Cypress.Commands.add("waitForServerRestart", () => {
// cy.waitUntil(() => !Cypress.$(adminSettings.restartNotice).length, { // cy.waitUntil(() => !Cypress.$(adminSettings.restartNotice).length, {
// timeout: 180000, // timeout: 180000,
// }); // });
cy.get(adminSettings.restartNotice, { timeout: 210000 }).should("not.exist"); cy.get(adminSettings.restartNotice, { timeout: 240000 }).should("not.exist");
cy.window().then((win) => { cy.window().then((win) => {
win.location.reload(); win.location.reload();
}); });

View File

@ -890,19 +890,11 @@ export class AggregateHelper extends ReusableHelper {
propertyName: string, propertyName: string,
toggle: "true" | "false", toggle: "true" | "false",
) { ) {
let locator; this.GetElement(this.locator._propertyToggleValue(propertyName))
if (propertyName.startsWith("//")) { .invoke("attr", "data-checked")
locator = cy.xpath(propertyName); .then((classes) => {
locator.should("have.attr", toggle);
} else if (propertyName.includes(" ")) {
locator = cy.get(propertyName);
locator.should("have.attr", toggle);
} else {
locator = cy.xpath(this.locator._propertyToggleValue(propertyName));
locator.invoke("attr", "data-checked").then((classes) => {
expect(classes).includes(toggle); expect(classes).includes(toggle);
}); });
}
} }
public AssertExistingCheckedState(selector: string, toggle = "true") { public AssertExistingCheckedState(selector: string, toggle = "true") {

View File

@ -286,7 +286,7 @@ export class DataSources {
).click(); ).click();
this.agHelper.GetNClick(this._generatePageBtn); this.agHelper.GetNClick(this._generatePageBtn);
this.assertHelper.AssertNetworkStatus("@replaceLayoutWithCRUDPage", 201); this.assertHelper.AssertNetworkStatus("@replaceLayoutWithCRUDPage", 201);
this.agHelper.GetNClick(this.locator._visibleTextSpan("Got it")); this.agHelper.ClickButton("Got it");
} }
public GeneratePageWithMockDB() { public GeneratePageWithMockDB() {
@ -303,7 +303,7 @@ export class DataSources {
this.agHelper.GetNClickByContains(this._dropdownOption, "public.users"); this.agHelper.GetNClickByContains(this._dropdownOption, "public.users");
this.agHelper.GetNClick(this._generatePageBtn); this.agHelper.GetNClick(this._generatePageBtn);
this.assertHelper.AssertNetworkStatus("@replaceLayoutWithCRUDPage", 201); this.assertHelper.AssertNetworkStatus("@replaceLayoutWithCRUDPage", 201);
this.agHelper.GetNClick(this.locator._visibleTextSpan("Got it")); this.agHelper.ClickButton("Got it");
} }
public StartDataSourceRoutes() { public StartDataSourceRoutes() {

View File

@ -83,7 +83,6 @@ export class HomePage {
private _uploadFile = "//div/form/input"; private _uploadFile = "//div/form/input";
private _importSuccessModal = ".t--import-app-success-modal"; private _importSuccessModal = ".t--import-app-success-modal";
private _forkModal = ".fork-modal"; private _forkModal = ".fork-modal";
private _importSuccessModalGotit = ".t--import-success-modal-got-it";
private _appCard = (applicationName: string) => private _appCard = (applicationName: string) =>
"//span[text()='" + "//span[text()='" +
applicationName + applicationName +
@ -585,7 +584,7 @@ export class HomePage {
this.agHelper.AssertElementVisibility( this.agHelper.AssertElementVisibility(
this.locator._visibleTextSpan("Your application is ready to use."), this.locator._visibleTextSpan("Your application is ready to use."),
); );
this.agHelper.GetNClick(this._importSuccessModalGotit, 0, true); this.agHelper.ClickButton("Got it");
} }
public AssertImportToast(timeout = 5000) { public AssertImportToast(timeout = 5000) {

View File

@ -248,7 +248,6 @@ export class PropertyPane {
propertyName: string, propertyName: string,
toggle: "On" | "Off" = "On", toggle: "On" | "Off" = "On",
networkCall = "updateLayout", networkCall = "updateLayout",
toValidateNetworkCall = true,
) { ) {
if (toggle == "On") { if (toggle == "On") {
this.agHelper this.agHelper
@ -262,9 +261,7 @@ export class PropertyPane {
.should("not.be.checked"); .should("not.be.checked");
} }
this.agHelper.AssertAutoSave(); this.agHelper.AssertAutoSave();
if (toValidateNetworkCall) { networkCall && this.assertHelper.AssertNetworkStatus(networkCall);
networkCall && this.assertHelper.AssertNetworkStatus(networkCall);
}
} }
public MoveToTab(tab: "Content" | "Style") { public MoveToTab(tab: "Content" | "Style") {

View File

@ -90,7 +90,7 @@ export class Table {
_liCurrentSelectedPage = _liCurrentSelectedPage =
"//div[@type='LIST_WIDGET']//ul[contains(@class, 'rc-pagination')]/li[contains(@class, 'rc-pagination-item-active')]/a"; "//div[@type='LIST_WIDGET']//ul[contains(@class, 'rc-pagination')]/li[contains(@class, 'rc-pagination-item-active')]/a";
private _tr = ".tbody .tr"; private _tr = ".tbody .tr";
private _searchText = "input[type='search']"; private _searchTableInput = "input[type='search'][placeholder='Search...']";
_searchBoxCross = _searchBoxCross =
"//div[contains(@class, 't--search-input')]/following-sibling::div"; "//div[contains(@class, 't--search-input')]/following-sibling::div";
_addIcon = "button .bp3-icon-add"; _addIcon = "button .bp3-icon-add";
@ -248,15 +248,12 @@ export class Table {
} }
public WaitForTableEmpty(tableVersion: "v1" | "v2" = "v1") { public WaitForTableEmpty(tableVersion: "v1" | "v2" = "v1") {
cy.waitUntil(() => cy.get(this._tableEmptyColumnData(tableVersion)), { this.agHelper
errorMsg: "Table is populated when not expected", .GetElement(this._tableEmptyColumnData(tableVersion))
timeout: 10000, .children()
interval: 2000, .should("have.length", 0); //or below
}).then(($children) => { //expect($children).to.have.lengthOf(0)
cy.wrap($children).children().should("have.length", 0); //or below this.agHelper.Sleep(500);
//expect($children).to.have.lengthOf(0)
this.agHelper.Sleep(500);
});
} }
public AssertTableHeaderOrder(expectedOrder: string) { public AssertTableHeaderOrder(expectedOrder: string) {
@ -446,11 +443,11 @@ export class Table {
} }
public AssertSearchText(searchTxt: string, index = 0) { public AssertSearchText(searchTxt: string, index = 0) {
cy.get(this._searchText).eq(index).should("have.value", searchTxt); cy.get(this._searchTableInput).eq(index).should("have.value", searchTxt);
} }
public SearchTable(searchTxt: string, index = 0) { public SearchTable(searchTxt: string, index = 0) {
cy.get(this._searchText).eq(index).type(searchTxt); this.agHelper.TypeText(this._searchTableInput, searchTxt, index);
} }
public ResetSearch() { public ResetSearch() {

View File

@ -1,23 +1,22 @@
{ {
"baseUrl": "http://localhost/", "baseUrl": "http://localhost/",
"defaultCommandTimeout": 20000, "defaultCommandTimeout": 20000,
"requestTimeout": 21000, "requestTimeout": 21000,
"responseTimeout": 20000, "responseTimeout": 20000,
"pageLoadTimeout": 30000, "pageLoadTimeout": 30000,
"videoUploadOnPasses": false,
"videoCompression": false, "videoCompression": false,
"numTestsKeptInMemory": 10, "numTestsKeptInMemory": 10,
"reporterOptions": { "reporterOptions": {
"reportDir": "results", "reportDir": "results",
"overwrite": false, "overwrite": false,
"html": true, "html": true,
"json": false "json": false
}, },
"chromeWebSecurity": false, "chromeWebSecurity": false,
"viewportHeight": 1100, "viewportHeight": 1100,
"viewportWidth": 1400, "viewportWidth": 1400,
"retries": { "retries": {
"runMode": 0, "runMode": 0,
"openMode": 0 "openMode": 0
} }
} }

View File

@ -5,7 +5,6 @@ export default defineConfig({
requestTimeout: 60000, requestTimeout: 60000,
responseTimeout: 60000, responseTimeout: 60000,
pageLoadTimeout: 60000, pageLoadTimeout: 60000,
videoUploadOnPasses: false,
videoCompression: false, videoCompression: false,
numTestsKeptInMemory: 5, numTestsKeptInMemory: 5,
experimentalMemoryManagement: true, experimentalMemoryManagement: true,

View File

@ -6,7 +6,6 @@ export default defineConfig({
requestTimeout: 60000, requestTimeout: 60000,
responseTimeout: 60000, responseTimeout: 60000,
pageLoadTimeout: 60000, pageLoadTimeout: 60000,
videoUploadOnPasses: false,
numTestsKeptInMemory: 5, numTestsKeptInMemory: 5,
experimentalMemoryManagement: true, experimentalMemoryManagement: true,
reporter: "cypress-mochawesome-reporter", reporter: "cypress-mochawesome-reporter",

View File

@ -5,7 +5,6 @@ export default defineConfig({
requestTimeout: 60000, requestTimeout: 60000,
responseTimeout: 60000, responseTimeout: 60000,
pageLoadTimeout: 60000, pageLoadTimeout: 60000,
videoUploadOnPasses: false,
videoCompression: false, videoCompression: false,
numTestsKeptInMemory: 5, numTestsKeptInMemory: 5,
experimentalMemoryManagement: true, experimentalMemoryManagement: true,

View File

@ -286,7 +286,7 @@
"compression-webpack-plugin": "^10.0.0", "compression-webpack-plugin": "^10.0.0",
"cra-bundle-analyzer": "^0.1.0", "cra-bundle-analyzer": "^0.1.0",
"cy-verify-downloads": "^0.0.5", "cy-verify-downloads": "^0.0.5",
"cypress": "^12.17.4", "cypress": "^13.0.0",
"cypress-file-upload": "^4.1.1", "cypress-file-upload": "^4.1.1",
"cypress-image-snapshot": "^4.0.1", "cypress-image-snapshot": "^4.0.1",
"cypress-mochawesome-reporter": "^3.5.1", "cypress-mochawesome-reporter": "^3.5.1",

View File

@ -2249,9 +2249,9 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@cypress/request@npm:2.88.12": "@cypress/request@npm:^3.0.0":
version: 2.88.12 version: 3.0.0
resolution: "@cypress/request@npm:2.88.12" resolution: "@cypress/request@npm:3.0.0"
dependencies: dependencies:
aws-sign2: ~0.7.0 aws-sign2: ~0.7.0
aws4: ^1.8.0 aws4: ^1.8.0
@ -2271,7 +2271,7 @@ __metadata:
tough-cookie: ^4.1.3 tough-cookie: ^4.1.3
tunnel-agent: ^0.6.0 tunnel-agent: ^0.6.0
uuid: ^8.3.2 uuid: ^8.3.2
checksum: 2c6fbf7f3127d41bffca8374beaa8cf95450495a8a077b00309ea9d94dd2a4da450a77fe038e8ad26c97cdd7c39b65c53c850f8338ce9bc2dbe23ce2e2b48329 checksum: 8ec81075b800b84df8a616dce820a194d562a35df251da234f849344022979f3675baa0b82988843f979a488e39bc1eec6204cfe660c75ace9bf4d2951edec43
languageName: node languageName: node
linkType: hard linkType: hard
@ -9962,7 +9962,7 @@ __metadata:
craco-alias: ^2.1.1 craco-alias: ^2.1.1
craco-babel-loader: ^1.0.4 craco-babel-loader: ^1.0.4
cy-verify-downloads: ^0.0.5 cy-verify-downloads: ^0.0.5
cypress: ^12.17.4 cypress: ^13.0.0
cypress-file-upload: ^4.1.1 cypress-file-upload: ^4.1.1
cypress-image-snapshot: ^4.0.1 cypress-image-snapshot: ^4.0.1
cypress-log-to-output: ^1.1.2 cypress-log-to-output: ^1.1.2
@ -13405,11 +13405,11 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"cypress@npm:^12.17.4": "cypress@npm:^13.0.0":
version: 12.17.4 version: 13.0.0
resolution: "cypress@npm:12.17.4" resolution: "cypress@npm:13.0.0"
dependencies: dependencies:
"@cypress/request": 2.88.12 "@cypress/request": ^3.0.0
"@cypress/xvfb": ^1.2.4 "@cypress/xvfb": ^1.2.4
"@types/node": ^16.18.39 "@types/node": ^16.18.39
"@types/sinonjs__fake-timers": 8.1.1 "@types/sinonjs__fake-timers": 8.1.1
@ -13454,7 +13454,7 @@ __metadata:
yauzl: ^2.10.0 yauzl: ^2.10.0
bin: bin:
cypress: bin/cypress cypress: bin/cypress
checksum: c9c79f5493b23e9c8cfb92d45d50ea9d0fae54210dde203bfa794a79436faf60108d826fe9007a7d67fddf7919802ad8f006b7ae56c5c198c75d5bc85bbc851b checksum: 223dddfd85dbde5e3a915e87b6cb176b99a9e5bcc24baa40cd5b9ca4a93315a95cf53c5c6ac3a6984f59be55ffc8b58b93a713c0ddcb63a5f4996229cce70329
languageName: node languageName: node
linkType: hard linkType: hard