test: Add tests for git bugs and git import (#12751)

* add tests for git bugs and git import

* add dsl file

* added test for git bug and commented git sync test for apps

* updated tests

* removed wait

* updated messages.test.ts

* updated git import tests

* added fix for onboarding_spec
This commit is contained in:
Parthvi12 2022-04-14 08:32:57 +05:30 committed by GitHub
parent faaf977728
commit 0766f83cf0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 488 additions and 67 deletions

View File

@ -14,9 +14,7 @@
"json": false
},
"ignoreTestFiles": [
"**/Smoke_TestSuite/Application/PgAdmin_spec*.js",
"**/Smoke_TestSuite/ClientSideTests/Onboarding/FirstTimeUserOnboarding_spec*.js",
"**/Smoke_TestSuite/ClientSideTests/Templates/Fork_Template_spec.js"
"**/Smoke_TestSuite/Application/PgAdmin_spec*.js"
],
"chromeWebSecurity": false,
"viewportHeight": 1100,

View File

@ -0,0 +1,60 @@
{
"dsl": {
"widgetName": "MainContainer",
"backgroundColor": "none",
"rightColumn": 816,
"snapColumns": 64,
"detachFromLayout": true,
"widgetId": "0",
"topRow": 0,
"bottomRow": 1320,
"containerStyle": "none",
"snapRows": 125,
"parentRowSpace": 1,
"type": "CANVAS_WIDGET",
"canExtend": true,
"version": 56,
"minHeight": 1292,
"parentColumnSpace": 1,
"dynamicBindingPathList": [],
"leftColumn": 0,
"children": [
{
"isVisible": true,
"label": "",
"widgetName": "Input1",
"version": 2,
"defaultText": "{{JSObject1.myFun1()}}",
"iconAlign": "left",
"autoFocus": false,
"labelStyle": "",
"resetOnSubmit": true,
"isRequired": false,
"isDisabled": false,
"animateLoading": true,
"inputType": "TEXT",
"type": "INPUT_WIDGET_V2",
"hideCard": false,
"displayName": "Input",
"key": "aco5l52fup",
"iconSVG": "/static/media/icon.9f505595.svg",
"widgetId": "m69vw37r1x",
"renderMode": "CANVAS",
"isLoading": false,
"parentColumnSpace": 12.5625,
"parentRowSpace": 10,
"leftColumn": 22,
"rightColumn": 42,
"topRow": 20,
"bottomRow": 24,
"parentId": "0",
"dynamicBindingPathList": [
{
"key": "defaultText"
}
],
"dynamicTriggerPathList": []
}
]
}
}

View File

@ -2,12 +2,9 @@ const dsl = require("../../../fixtures/CMSdsl.json");
const apiwidget = require("../../../locators/apiWidgetslocator.json");
import apiEditor from "../../../locators/ApiEditor";
import appPage from "../../../locators/CMSApplocators";
const commonlocators = require("../../../locators/commonlocators.json");
describe("Content Management System App", function() {
let orgid;
let newOrganizationName;
let appname;
let datasourceName;
let repoName;
before(() => {
cy.addDsl(dsl);
@ -127,4 +124,30 @@ describe("Content Management System App", function() {
cy.ResponseCheck("Dan.Wyman@hotmail.com");
cy.ResponseCheck("Recusan");
});
/*it("6. Connect app to git, verify data binding in edit and deploy mode", ()=>{
cy.get(`.t--entity-name:contains("Page1")`)
.should("be.visible")
.click({ force: true });
cy.generateUUID().then((uid) => {
repoName = uid;
cy.createTestGithubRepo(repoName);
cy.connectToGitRepo(repoName);
});
cy.latestDeployPreview()
cy.wait(2000)
cy.xpath("//span[text()='Curt50@gmail.com']").should("be.visible").click({ force: true });
cy.xpath(appPage.subjectField).type("Test");
cy.xpath(appPage.contentField)
.last()
.type("Task completed", { force: true });
cy.get(appPage.confirmButton)
.closest("div")
.click({ force: true });
cy.get(appPage.closeButton)
.closest("div")
.click({ force: true });
cy.get(commonlocators.backToEditor).click();
cy.wait(1000);
}) */
});

View File

@ -2,7 +2,9 @@ const dsl = require("../../../fixtures/mongoAppdsl.json");
const datasource = require("../../../locators/DatasourcesEditor.json");
const queryLocators = require("../../../locators/QueryEditor.json");
const appPage = require("../../../locators/PgAdminlocators.json");
const commonlocators = require("../../../locators/commonlocators.json");
let repoName;
describe("Shopping cart App", function() {
let datasourceName;
@ -166,4 +168,19 @@ describe("Shopping cart App", function() {
.eq(3)
.should("have.text", "3");
});
/*it("Connect the appplication to git and validate data in deploy mode and edit mode", function() {
cy.generateUUID().then((uid) => {
repoName = uid;
cy.createTestGithubRepo(repoName);
cy.connectToGitRepo(repoName);
});
cy.latestDeployPreview();
cy.wait(2000)
cy.get(".selected-row").children().eq(0)
.should("have.text", "A man called ove");
cy.get(commonlocators.backToEditor).click();
cy.get(".selected-row").children().eq(0)
.should("have.text", "A man called ove");
cy.wait(1000);
}) */
});

View File

@ -1,8 +1,15 @@
import gitSyncLocators from "../../../../locators/gitSyncLocators";
const homePage = require("../../../../locators/HomePage");
const explorer = require("../../../../locators/explorerlocators.json");
const reconnectDatasourceModal = require("../../../../locators/ReconnectLocators");
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
const pages = require("../../../../locators/Pages.json");
const commonlocators = require("../../../../locators/commonlocators.json");
const datasourceEditor = require("../../../../locators/DatasourcesEditor.json");
const jsObject = "JSObject1";
const newBranch = "feat/temp";
const mainBranch = "master";
let repoName;
let appName;
describe("Git import flow", function() {
before(() => {
@ -24,36 +31,30 @@ describe("Git import flow", function() {
cy.wait("@importNewApplication").then((interception) => {
cy.wait(100);
// should check reconnect modal opening
// const { isPartialImport } = interception.response.body.data;
// if (isPartialImport) {
// should reconnect button
cy.get(reconnectDatasourceModal.Modal).should("be.visible");
cy.ReconnectDatasource("TEDPostgres");
cy.wait(1000);
cy.fillPostgresDatasourceForm();
cy.get(datasourceEditor.sectionAuthentication).click();
cy.testSaveDatasource();
cy.wait(1000);
cy.ReconnectDatasource("TEDMySQL");
cy.wait(500);
cy.fillMySQLDatasourceForm();
cy.get(datasourceEditor.sectionAuthentication).click();
cy.testSaveDatasource();
cy.wait(1000);
cy.ReconnectDatasource("TEDMongo");
cy.wait(1000);
cy.fillMongoDatasourceForm();
cy.get(datasourceEditor.sectionAuthentication).click();
cy.testSaveDatasource();
cy.wait(2000);
// commenting until bug12535 is closed
/* cy.ReconnectDatasource("TEDMySQL");
cy.wait(2000);
cy.fillMySQLDatasourceForm();
cy.testSaveDatasource();
cy.wait(2000);
cy.ReconnectDatasource("TEDMongo");
cy.wait(2000);
cy.fillMongoDatasourceForm();
cy.testSaveDatasource();
cy.wait(2000);
// } else {
cy.get(homePage.toastMessage).should(
"contain",
"Application imported successfully",
/*cy.get(homePage.toastMessage).should(
"contain",
"Application imported successfully",
); */
cy.get(reconnectDatasourceModal.SkipToAppBtn).click({ force: true });
cy.wait(2000);
cy.get(".tbody")
.first()
.should("contain.text", "Test user 7");
cy.wait(1000);
cy.generateUUID().then((uid) => {
repoName = uid;
cy.createTestGithubRepo(repoName);
@ -77,47 +78,147 @@ describe("Git import flow", function() {
.next()
.click();
cy.importAppFromGit(repoName);
// cy.wait("@importNewApplication").then((interception) => {
cy.wait(100);
// should check reconnect modal opening
// const { isPartialImport } = interception.response.body.data;
// if (isPartialImport) {
// should reconnect button
cy.get(reconnectDatasourceModal.Modal).should("be.visible");
cy.ReconnectDatasource("TEDPostgres");
cy.wait(1000);
cy.wait(500);
cy.fillPostgresDatasourceForm();
cy.get(datasourceEditor.sectionAuthentication).click();
cy.testSaveDatasource();
cy.wait(1000);
/* cy.ReconnectDatasource("TEDMySQL");
cy.wait(1000);
cy.fillMySQLDatasourceForm();
cy.testSaveDatasource();
cy.wait(1000);
cy.ReconnectDatasource("TEDMongo");
cy.wait(1000);
cy.fillMongoDatasourceForm();
cy.testSaveDatasource();
cy.wait(2000);
} else {
cy.get(homePage.toastMessage).should(
"contain",
"Application imported successfully",
);
} */
cy.get(reconnectDatasourceModal.SkipToAppBtn).click({ force: true });
cy.wait(500);
cy.ReconnectDatasource("TEDMySQL");
cy.wait(500);
cy.fillMySQLDatasourceForm();
cy.get(datasourceEditor.sectionAuthentication).click();
cy.testSaveDatasource();
cy.wait(500);
cy.ReconnectDatasource("TEDMongo");
cy.wait(500);
cy.fillMongoDatasourceForm();
cy.get(datasourceEditor.sectionAuthentication).click();
cy.testSaveDatasource();
cy.wait(2000);
/* cy.get(homePage.toastMessage).should(
"contain",
"Application imported successfully",
); */
});
it("Verfiy imported app should have all the data binding visible", () => {
it("Verfiy imported app should have all the data binding visible in deploy and edit mode", () => {
// verify postgres data binded to table
cy.get(".tbody")
.first()
.should("contain.text", "Test user 7");
//verify MySQL data binded to table
cy.get(".tbody")
.last()
.should("contain.text", "New Config");
// verify api response binded to input widget
cy.xpath("//input[@value='this is a test']").should("be.visible");
// verify js object binded to input widget
cy.xpath("//input[@value='Success']").should("be.visible");
});
it("Create a new branch, clone page and validate data on that branch in deploy and edit mode", () => {
cy.createGitBranch(newBranch);
cy.get(".tbody")
.first()
.should("contain.text", "Test user 7");
// verify MySQL data binded to table
// cy.get(".tbody").last().should("contain.text", "New Config")
cy.get(".tbody")
.last()
.should("contain.text", "New Config");
// verify api response binded to input widget
cy.xpath("//input[@value='this is a test']");
// verify js object binded to input widget
cy.xpath("//input[@value='Success']");
cy.CheckAndUnfoldEntityItem("PAGES");
// clone the page1 and validate data binding
cy.get(".t--entity-name:contains(Page1)")
.trigger("mouseover")
.click({ force: true });
cy.xpath(apiwidget.popover)
.first()
.should("be.hidden")
.invoke("show")
.click({ force: true });
cy.get(pages.clonePage).click({ force: true });
cy.wait("@clonePage").should(
"have.nested.property",
"response.body.responseMeta.status",
201,
);
cy.CheckAndUnfoldEntityItem("QUERIES/JS");
// verify jsObject is not duplicated
cy.get(`.t--entity-name:contains(${jsObject})`).should("have.length", 1);
cy.xpath("//input[@class='bp3-input' and @value='Success']").should(
"be.visible",
);
// deploy the app and validate data binding
cy.wait(2000);
cy.get(homePage.publishButton).click();
cy.get(gitSyncLocators.commitCommentInput).type("Initial Commit");
cy.get(gitSyncLocators.commitButton).click();
cy.wait(8000);
cy.get(gitSyncLocators.closeGitSyncModal).click();
cy.merge(mainBranch);
cy.get(gitSyncLocators.closeGitSyncModal).click();
cy.wait(2000);
cy.latestDeployPreview();
cy.get(".tbody")
.first()
.should("contain.text", "Test user 7");
// verify api response binded to input widget
cy.xpath("//input[@value='this is a test']");
// verify js object binded to input widget
cy.xpath("//input[@value='Success']");
// navigate to Page1 and verify data
cy.get(".t--page-switch-tab")
.contains("Page1")
.click({ force: true });
cy.get(".tbody")
.first()
.should("contain.text", "Test user 7");
// verify api response binded to input widget
cy.xpath("//input[@value='this is a test']");
// verify js object binded to input widget
cy.xpath("//input[@value='Success']");
cy.get(commonlocators.backToEditor).click();
cy.wait(2000);
});
it("Switch to master and verify data in edit and deploy mode", () => {
cy.switchGitBranch("master");
cy.wait(2000);
// validate data binding in edit and deploy mode
cy.latestDeployPreview();
cy.get(".tbody")
.first()
.should("contain.text", "Test user 7");
cy.xpath("//input[@value='this is a test']");
cy.xpath("//input[@value='Success']");
// navigate to Page1 and verify data
cy.get(".t--page-switch-tab")
.contains("Page1 Copy")
.click({ force: true });
cy.get(".tbody")
.first()
.should("contain.text", "Test user 7");
cy.xpath("//input[@value='this is a test']");
cy.xpath("//input[@value='Success']");
cy.get(commonlocators.backToEditor).click();
cy.wait(2000);
});
it("Add widget to master, merge then checkout to child branch and verify data", () => {
cy.get(explorer.widgetSwitchId).click();
cy.wait(2000); // wait for transition
cy.dragAndDropToCanvas("buttonwidget", { x: 300, y: 600 });
cy.wait(3000);
cy.commitAndPush();
cy.merge(newBranch);
cy.get(gitSyncLocators.closeGitSyncModal).click();
cy.wait(2000);
cy.switchGitBranch(newBranch);
cy.wait(4000);
// verify button widget is visible on child branch
cy.get(".t--widget-buttonwidget").should("be.visible");
});
after(() => {

View File

@ -1,11 +1,19 @@
import gitSyncLocators from "../../../../locators/gitSyncLocators";
const dsl = require("../../../../fixtures/JsObjecWithGitdsl.json");
const commonlocators = require("../../../../locators/commonlocators.json");
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
const pages = require("../../../../locators/Pages.json");
import homePage from "../../../../locators/HomePage";
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
let ee = ObjectsRegistry.EntityExplorer;
const pagename = "ChildPage";
const tempBranch = "tempBranch";
const tempBranch = "feat/tempBranch";
const tempBranch0 = "tempBranch0";
const mainBranch = "master";
const jsObject = "JSObject1";
let repoName;
describe("Git sync Bugs", function() {
describe("Git sync Bug #10773", function() {
before(() => {
cy.NavigateToHome();
cy.createOrg();
@ -35,10 +43,13 @@ describe("Git sync Bugs", function() {
cy.get(`.t--entity-name:contains("${pagename}")`).click();
// delete page from tempBranch and merge to master
cy.Deletepage(pagename);
cy.commitAndPush();
cy.get(homePage.publishButton).click();
cy.get(gitSyncLocators.commitCommentInput).type("Initial Commit");
cy.get(gitSyncLocators.commitButton).click();
cy.wait(8000);
cy.get(gitSyncLocators.closeGitSyncModal).click();
cy.merge(mainBranch);
cy.get(gitSyncLocators.closeGitSyncModal).click();
cy.wait(8000);
// verify ChildPage is not on master
cy.switchGitBranch(mainBranch);
cy.CheckAndUnfoldEntityItem("PAGES");
@ -48,6 +59,185 @@ describe("Git sync Bugs", function() {
cy.CheckAndUnfoldEntityItem("PAGES");
cy.get(`.t--entity-name:contains("${pagename}")`).should("not.exist");
});
});
describe("Git Bug: Fix clone page issue where JSObject are not showing up in destination page when application is connected to git", function() {
it("Connect app to git, clone the Page ,verify JSobject duplication should not happen and validate data binding in deploy mode and edit mode", () => {
cy.NavigateToHome();
cy.createOrg();
cy.wait("@createOrg").then((interception) => {
const newOrganizationName = interception.response.body.data.name;
cy.CreateAppForOrg(newOrganizationName, newOrganizationName);
cy.addDsl(dsl);
});
// connect app to git
cy.generateUUID().then((uid) => {
repoName = uid;
cy.createTestGithubRepo(repoName);
cy.connectToGitRepo(repoName);
});
ee.expandCollapseEntity("QUERIES/JS", true);
// create JS object and validate its data on Page1
cy.createJSObject('return "Success";');
cy.get(`.t--entity-name:contains("Page1")`)
.should("be.visible")
.click({ force: true });
cy.wait(1000);
cy.xpath("//input[@class='bp3-input' and @value='Success']").should(
"be.visible",
);
// clone the page1 and validate data binding
cy.get(".t--entity-name:contains(Page1)")
.trigger("mouseover")
.click({ force: true });
cy.xpath(apiwidget.popover)
.first()
.should("be.hidden")
.invoke("show")
.click({ force: true });
cy.get(pages.clonePage).click({ force: true });
cy.wait("@clonePage").should(
"have.nested.property",
"response.body.responseMeta.status",
201,
);
cy.CheckAndUnfoldEntityItem("QUERIES/JS");
// verify jsObject is not duplicated
cy.get(`.t--entity-name:contains(${jsObject})`).should("have.length", 1);
cy.xpath("//input[@class='bp3-input' and @value='Success']").should(
"be.visible",
);
// deploy the app and validate data binding
cy.get(homePage.publishButton).click();
cy.get(gitSyncLocators.commitCommentInput).type("Initial Commit");
cy.get(gitSyncLocators.commitButton).click();
cy.wait(8000);
cy.get(gitSyncLocators.closeGitSyncModal).click();
cy.latestDeployPreview();
cy.wait(2000);
cy.xpath("//input[@class='bp3-input' and @value='Success']").should(
"be.visible",
);
// switch to Page1 and validate data binding
cy.get(".t--page-switch-tab")
.contains("Page1")
.click({ force: true });
cy.xpath("//input[@class='bp3-input' and @value='Success']").should(
"be.visible",
);
cy.get(commonlocators.backToEditor).click();
cy.wait(1000);
});
it("Bug:12724 Js objects are merged to single page when user creates a new branch", () => {
// create a new branch, clone page and validate jsObject data binding
cy.createGitBranch(tempBranch);
cy.wait(2000);
cy.CheckAndUnfoldEntityItem("PAGES");
cy.get(".t--entity-name:contains(Page1)")
.last()
.trigger("mouseover")
.click({ force: true });
cy.CheckAndUnfoldEntityItem("QUERIES/JS");
// verify jsObject is not duplicated
cy.get(`.t--entity-name:contains(${jsObject})`).should("have.length", 1);
cy.xpath("//input[@class='bp3-input' and @value='Success']").should(
"be.visible",
);
cy.get(".t--entity-name:contains(Page1)")
.first()
.trigger("mouseover")
.click({ force: true });
cy.xpath(apiwidget.popover)
.first()
.should("be.hidden")
.invoke("show")
.click({ force: true });
cy.get(pages.clonePage).click({ force: true });
cy.wait("@clonePage").should(
"have.nested.property",
"response.body.responseMeta.status",
201,
);
});
after(() => {
cy.deleteTestGithubRepo(repoName);
});
});
describe("Git synced app with JSObject", function() {
it("Create an app with JSObject, connect it to git and verify its data in edit and deploy mode", function() {
cy.NavigateToHome();
cy.createOrg();
cy.wait("@createOrg").then((interception) => {
const newOrganizationName = interception.response.body.data.name;
cy.CreateAppForOrg(newOrganizationName, newOrganizationName);
cy.addDsl(dsl);
});
ee.expandCollapseEntity("QUERIES/JS", true);
// create JS object and validate its data on Page1
cy.createJSObject('return "Success";');
cy.get(`.t--entity-name:contains("Page1")`)
.should("be.visible")
.click({ force: true });
cy.wait(1000);
cy.xpath("//input[@class='bp3-input' and @value='Success']").should(
"be.visible",
);
// clone the page1 and validate data binding
cy.get(".t--entity-name:contains(Page1)")
.trigger("mouseover")
.click({ force: true });
cy.xpath(apiwidget.popover)
.first()
.should("be.hidden")
.invoke("show")
.click({ force: true });
cy.get(pages.clonePage).click({ force: true });
cy.wait("@clonePage").should(
"have.nested.property",
"response.body.responseMeta.status",
201,
);
// connect app to git and deploy
cy.generateUUID().then((uid) => {
repoName = uid;
cy.createTestGithubRepo(repoName);
cy.connectToGitRepo(repoName);
cy.wait(3000);
});
cy.latestDeployPreview();
cy.wait(2000);
cy.xpath("//input[@class='bp3-input' and @value='Success']").should(
"be.visible",
);
// switch to Page1 and validate data binding
cy.get(".t--page-switch-tab")
.contains("Page1")
.click({ force: true });
cy.xpath("//input[@class='bp3-input' and @value='Success']").should(
"be.visible",
);
cy.get(commonlocators.backToEditor).click();
// verify jsObject data binding on Page 1
cy.CheckAndUnfoldEntityItem("QUERIES/JS");
cy.get(`.t--entity-name:contains(${jsObject})`).should("have.length", 1);
cy.xpath("//input[@class='bp3-input' and @value='Success']").should(
"be.visible",
);
// switch to Page1 copy and verify jsObject data binding
cy.CheckAndUnfoldEntityItem("PAGES");
cy.get(".t--entity-name:contains(Page1)")
.last()
.trigger("mouseover")
.click({ force: true });
cy.CheckAndUnfoldEntityItem("QUERIES/JS");
// verify jsObject is not duplicated
cy.get(`.t--entity-name:contains(${jsObject})`).should("have.length", 1);
cy.xpath("//input[@class='bp3-input' and @value='Success']").should(
"be.visible",
);
});
after(() => {
cy.deleteTestGithubRepo(repoName);
});

View File

@ -170,7 +170,11 @@ describe("FirstTimeUserOnboarding", function() {
.should("be.visible")
.wait(800);
cy.reload();
cy.wait("@getUser");
cy.wait("@getPage").should(
"have.nested.property",
"response.body.responseMeta.status",
200,
);
cy.get(OnboardingLocator.statusbar).should("be.visible");
cy.get(OnboardingLocator.textWidgetName).should("be.visible");
});

View File

@ -62,7 +62,7 @@ describe("Undo/Redo functionality", function() {
cy.get("body").click(0, 0);
cy.get("body").type(`{${modifierKey}}z`);
cy.get("body").type(`{${modifierKey}}z`);
cy.wait(1000);
cy.wait(2000);
cy.get(apiwidget.headers).should("have.class", "react-tabs__tab--selected");
cy.get("body").type(`{${modifierKey}}z`);
cy.get(`${apiwidget.resourceUrl} .CodeMirror-placeholder`).should(

View File

@ -955,7 +955,7 @@ Cypress.Commands.add("startServerAndRoutes", () => {
cy.route("POST", "api/v1/git/connect/*").as("connectGitRepo");
cy.route("POST", "api/v1/git/commit/*").as("commit");
cy.route("POST", "/api/v1/git/import/*").as("importFromGit");
cy.route("POST", "/api/v1/git/merge/*").as("mergeBranch");
cy.route("PUT", "api/v1/collections/actions/refactor").as("renameJsAction");
cy.route("POST", "/api/v1/collections/actions").as("createNewJSCollection");

View File

@ -10,7 +10,6 @@ const {
import gitSyncLocators from "../locators/gitSyncLocators";
import homePage from "../locators/HomePage";
const commonLocators = require("../locators/commonlocators.json");
const GITHUB_API_BASE = "https://api.github.com";
Cypress.Commands.add("revokeAccessGit", (appName) => {
@ -123,6 +122,26 @@ Cypress.Commands.add(
});
},
);
Cypress.Commands.add("latestDeployPreview", () => {
cy.server();
cy.route("POST", "/api/v1/applications/publish/*").as("publishApp");
// Wait before publish
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(2000);
cy.assertPageSave();
// Stubbing window.open to open in the same tab
cy.window().then((window) => {
cy.stub(window, "open").callsFake((url) => {
window.location.href = Cypress.config().baseUrl + url.substring(1);
window.location.target = "_self";
});
});
cy.get(gitSyncLocators.bottomBarCommitButton).click();
cy.xpath("//span[text()='Latest deployed preview']").click();
cy.log("pagename: " + localStorage.getItem("PageName"));
cy.wait(2000); //wait time for page to load!
});
Cypress.Commands.add("createGitBranch", (branch) => {
cy.get(gitSyncLocators.branchButton).click({ force: true });
@ -208,7 +227,6 @@ Cypress.Commands.add("commitAndPush", (assertFailure) => {
cy.get(homePage.publishButton).click();
cy.get(gitSyncLocators.commitCommentInput).type("Initial Commit");
cy.get(gitSyncLocators.commitButton).click();
if (!assertFailure) {
// check for commit success
cy.wait("@commit").should(
@ -216,6 +234,7 @@ Cypress.Commands.add("commitAndPush", (assertFailure) => {
"response.body.responseMeta.status",
201,
);
cy.wait(2000);
} else {
cy.wait("@commit").then((interception) => {
const status = interception.response.body.responseMeta.status;
@ -265,6 +284,12 @@ Cypress.Commands.add("merge", (destinationBranch) => {
.click();
cy.contains(Cypress.env("MESSAGES").NO_MERGE_CONFLICT());
cy.get(gitSyncLocators.mergeCTA).click();
cy.wait("@mergeBranch").should(
"have.nested.property",
"response.body.responseMeta.status",
200,
);
cy.contains(Cypress.env("MESSAGES").MERGED_SUCCESSFULLY());
});
Cypress.Commands.add(

View File

@ -47,6 +47,7 @@ import {
MERGE,
MERGE_CHANGES,
MERGE_CONFLICT_ERROR,
MERGED_SUCCESSFULLY,
NO_MERGE_CONFLICT,
NONE_REVERSIBLE_MESSAGE,
PASTE_SSH_URL_INFO,
@ -271,6 +272,7 @@ describe("git-sync messages", () => {
key: "CHANGES_USER_AND_MIGRATION",
value: "Appsmith update and user changes since last commit",
},
{ key: "MERGED_SUCCESSFULLY", value: "Merged successfully" },
];
const functions = [
CANNOT_MERGE_DUE_TO_UNCOMMITTED_CHANGES,
@ -319,6 +321,7 @@ describe("git-sync messages", () => {
MERGE_CONFLICT_ERROR,
NONE_REVERSIBLE_MESSAGE,
NO_MERGE_CONFLICT,
MERGED_SUCCESSFULLY,
PASTE_SSH_URL_INFO,
PULL_CHANGES,
REGENERATE_KEY_CONFIRM_MESSAGE,