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:
parent
faaf977728
commit
0766f83cf0
|
|
@ -14,9 +14,7 @@
|
||||||
"json": false
|
"json": false
|
||||||
},
|
},
|
||||||
"ignoreTestFiles": [
|
"ignoreTestFiles": [
|
||||||
"**/Smoke_TestSuite/Application/PgAdmin_spec*.js",
|
"**/Smoke_TestSuite/Application/PgAdmin_spec*.js"
|
||||||
"**/Smoke_TestSuite/ClientSideTests/Onboarding/FirstTimeUserOnboarding_spec*.js",
|
|
||||||
"**/Smoke_TestSuite/ClientSideTests/Templates/Fork_Template_spec.js"
|
|
||||||
],
|
],
|
||||||
"chromeWebSecurity": false,
|
"chromeWebSecurity": false,
|
||||||
"viewportHeight": 1100,
|
"viewportHeight": 1100,
|
||||||
|
|
|
||||||
60
app/client/cypress/fixtures/JsObjecWithGitdsl.json
Normal file
60
app/client/cypress/fixtures/JsObjecWithGitdsl.json
Normal 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": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,12 +2,9 @@ const dsl = require("../../../fixtures/CMSdsl.json");
|
||||||
const apiwidget = require("../../../locators/apiWidgetslocator.json");
|
const apiwidget = require("../../../locators/apiWidgetslocator.json");
|
||||||
import apiEditor from "../../../locators/ApiEditor";
|
import apiEditor from "../../../locators/ApiEditor";
|
||||||
import appPage from "../../../locators/CMSApplocators";
|
import appPage from "../../../locators/CMSApplocators";
|
||||||
|
const commonlocators = require("../../../locators/commonlocators.json");
|
||||||
describe("Content Management System App", function() {
|
describe("Content Management System App", function() {
|
||||||
let orgid;
|
let repoName;
|
||||||
let newOrganizationName;
|
|
||||||
let appname;
|
|
||||||
let datasourceName;
|
|
||||||
|
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.addDsl(dsl);
|
cy.addDsl(dsl);
|
||||||
|
|
@ -127,4 +124,30 @@ describe("Content Management System App", function() {
|
||||||
cy.ResponseCheck("Dan.Wyman@hotmail.com");
|
cy.ResponseCheck("Dan.Wyman@hotmail.com");
|
||||||
cy.ResponseCheck("Recusan");
|
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);
|
||||||
|
}) */
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,9 @@ const dsl = require("../../../fixtures/mongoAppdsl.json");
|
||||||
const datasource = require("../../../locators/DatasourcesEditor.json");
|
const datasource = require("../../../locators/DatasourcesEditor.json");
|
||||||
const queryLocators = require("../../../locators/QueryEditor.json");
|
const queryLocators = require("../../../locators/QueryEditor.json");
|
||||||
const appPage = require("../../../locators/PgAdminlocators.json");
|
const appPage = require("../../../locators/PgAdminlocators.json");
|
||||||
|
const commonlocators = require("../../../locators/commonlocators.json");
|
||||||
|
|
||||||
|
let repoName;
|
||||||
describe("Shopping cart App", function() {
|
describe("Shopping cart App", function() {
|
||||||
let datasourceName;
|
let datasourceName;
|
||||||
|
|
||||||
|
|
@ -166,4 +168,19 @@ describe("Shopping cart App", function() {
|
||||||
.eq(3)
|
.eq(3)
|
||||||
.should("have.text", "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);
|
||||||
|
}) */
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,15 @@
|
||||||
import gitSyncLocators from "../../../../locators/gitSyncLocators";
|
import gitSyncLocators from "../../../../locators/gitSyncLocators";
|
||||||
const homePage = require("../../../../locators/HomePage");
|
const homePage = require("../../../../locators/HomePage");
|
||||||
|
const explorer = require("../../../../locators/explorerlocators.json");
|
||||||
const reconnectDatasourceModal = require("../../../../locators/ReconnectLocators");
|
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 repoName;
|
||||||
let appName;
|
|
||||||
|
|
||||||
describe("Git import flow", function() {
|
describe("Git import flow", function() {
|
||||||
before(() => {
|
before(() => {
|
||||||
|
|
@ -24,36 +31,30 @@ describe("Git import flow", function() {
|
||||||
cy.wait("@importNewApplication").then((interception) => {
|
cy.wait("@importNewApplication").then((interception) => {
|
||||||
cy.wait(100);
|
cy.wait(100);
|
||||||
// should check reconnect modal opening
|
// should check reconnect modal opening
|
||||||
// const { isPartialImport } = interception.response.body.data;
|
|
||||||
// if (isPartialImport) {
|
|
||||||
// should reconnect button
|
|
||||||
cy.get(reconnectDatasourceModal.Modal).should("be.visible");
|
cy.get(reconnectDatasourceModal.Modal).should("be.visible");
|
||||||
cy.ReconnectDatasource("TEDPostgres");
|
cy.ReconnectDatasource("TEDPostgres");
|
||||||
cy.wait(1000);
|
cy.wait(1000);
|
||||||
cy.fillPostgresDatasourceForm();
|
cy.fillPostgresDatasourceForm();
|
||||||
|
cy.get(datasourceEditor.sectionAuthentication).click();
|
||||||
cy.testSaveDatasource();
|
cy.testSaveDatasource();
|
||||||
cy.wait(2000);
|
cy.wait(1000);
|
||||||
// commenting until bug12535 is closed
|
cy.ReconnectDatasource("TEDMySQL");
|
||||||
/* cy.ReconnectDatasource("TEDMySQL");
|
cy.wait(500);
|
||||||
cy.wait(2000);
|
|
||||||
cy.fillMySQLDatasourceForm();
|
cy.fillMySQLDatasourceForm();
|
||||||
|
cy.get(datasourceEditor.sectionAuthentication).click();
|
||||||
cy.testSaveDatasource();
|
cy.testSaveDatasource();
|
||||||
cy.wait(2000);
|
cy.wait(1000);
|
||||||
cy.ReconnectDatasource("TEDMongo");
|
cy.ReconnectDatasource("TEDMongo");
|
||||||
cy.wait(2000);
|
cy.wait(1000);
|
||||||
cy.fillMongoDatasourceForm();
|
cy.fillMongoDatasourceForm();
|
||||||
|
cy.get(datasourceEditor.sectionAuthentication).click();
|
||||||
cy.testSaveDatasource();
|
cy.testSaveDatasource();
|
||||||
cy.wait(2000);
|
cy.wait(2000);
|
||||||
// } else {
|
/*cy.get(homePage.toastMessage).should(
|
||||||
cy.get(homePage.toastMessage).should(
|
|
||||||
"contain",
|
"contain",
|
||||||
"Application imported successfully",
|
"Application imported successfully",
|
||||||
); */
|
); */
|
||||||
cy.get(reconnectDatasourceModal.SkipToAppBtn).click({ force: true });
|
cy.wait(1000);
|
||||||
cy.wait(2000);
|
|
||||||
cy.get(".tbody")
|
|
||||||
.first()
|
|
||||||
.should("contain.text", "Test user 7");
|
|
||||||
cy.generateUUID().then((uid) => {
|
cy.generateUUID().then((uid) => {
|
||||||
repoName = uid;
|
repoName = uid;
|
||||||
cy.createTestGithubRepo(repoName);
|
cy.createTestGithubRepo(repoName);
|
||||||
|
|
@ -77,47 +78,147 @@ describe("Git import flow", function() {
|
||||||
.next()
|
.next()
|
||||||
.click();
|
.click();
|
||||||
cy.importAppFromGit(repoName);
|
cy.importAppFromGit(repoName);
|
||||||
// cy.wait("@importNewApplication").then((interception) => {
|
|
||||||
cy.wait(100);
|
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.get(reconnectDatasourceModal.Modal).should("be.visible");
|
||||||
cy.ReconnectDatasource("TEDPostgres");
|
cy.ReconnectDatasource("TEDPostgres");
|
||||||
cy.wait(1000);
|
cy.wait(500);
|
||||||
cy.fillPostgresDatasourceForm();
|
cy.fillPostgresDatasourceForm();
|
||||||
|
cy.get(datasourceEditor.sectionAuthentication).click();
|
||||||
cy.testSaveDatasource();
|
cy.testSaveDatasource();
|
||||||
cy.wait(1000);
|
cy.wait(500);
|
||||||
/* cy.ReconnectDatasource("TEDMySQL");
|
cy.ReconnectDatasource("TEDMySQL");
|
||||||
cy.wait(1000);
|
cy.wait(500);
|
||||||
cy.fillMySQLDatasourceForm();
|
cy.fillMySQLDatasourceForm();
|
||||||
|
cy.get(datasourceEditor.sectionAuthentication).click();
|
||||||
cy.testSaveDatasource();
|
cy.testSaveDatasource();
|
||||||
cy.wait(1000);
|
cy.wait(500);
|
||||||
cy.ReconnectDatasource("TEDMongo");
|
cy.ReconnectDatasource("TEDMongo");
|
||||||
cy.wait(1000);
|
cy.wait(500);
|
||||||
cy.fillMongoDatasourceForm();
|
cy.fillMongoDatasourceForm();
|
||||||
|
cy.get(datasourceEditor.sectionAuthentication).click();
|
||||||
cy.testSaveDatasource();
|
cy.testSaveDatasource();
|
||||||
cy.wait(2000);
|
cy.wait(2000);
|
||||||
} else {
|
/* cy.get(homePage.toastMessage).should(
|
||||||
cy.get(homePage.toastMessage).should(
|
|
||||||
"contain",
|
"contain",
|
||||||
"Application imported successfully",
|
"Application imported successfully",
|
||||||
);
|
); */
|
||||||
} */
|
|
||||||
cy.get(reconnectDatasourceModal.SkipToAppBtn).click({ force: true });
|
|
||||||
});
|
});
|
||||||
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
|
// verify postgres data binded to table
|
||||||
cy.get(".tbody")
|
cy.get(".tbody")
|
||||||
.first()
|
.first()
|
||||||
.should("contain.text", "Test user 7");
|
.should("contain.text", "Test user 7");
|
||||||
//verify MySQL data binded to table
|
//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']").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");
|
||||||
// verify api response binded to input widget
|
// verify api response binded to input widget
|
||||||
cy.xpath("//input[@value='this is a test']");
|
cy.xpath("//input[@value='this is a test']");
|
||||||
// verify js object binded to input widget
|
// verify js object binded to input widget
|
||||||
cy.xpath("//input[@value='Success']");
|
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(() => {
|
after(() => {
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,19 @@
|
||||||
import gitSyncLocators from "../../../../locators/gitSyncLocators";
|
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 pagename = "ChildPage";
|
||||||
const tempBranch = "tempBranch";
|
const tempBranch = "feat/tempBranch";
|
||||||
const tempBranch0 = "tempBranch0";
|
const tempBranch0 = "tempBranch0";
|
||||||
const mainBranch = "master";
|
const mainBranch = "master";
|
||||||
|
const jsObject = "JSObject1";
|
||||||
let repoName;
|
let repoName;
|
||||||
|
|
||||||
describe("Git sync Bugs", function() {
|
describe("Git sync Bug #10773", function() {
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.NavigateToHome();
|
cy.NavigateToHome();
|
||||||
cy.createOrg();
|
cy.createOrg();
|
||||||
|
|
@ -35,10 +43,13 @@ describe("Git sync Bugs", function() {
|
||||||
cy.get(`.t--entity-name:contains("${pagename}")`).click();
|
cy.get(`.t--entity-name:contains("${pagename}")`).click();
|
||||||
// delete page from tempBranch and merge to master
|
// delete page from tempBranch and merge to master
|
||||||
cy.Deletepage(pagename);
|
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.merge(mainBranch);
|
||||||
cy.get(gitSyncLocators.closeGitSyncModal).click();
|
cy.get(gitSyncLocators.closeGitSyncModal).click();
|
||||||
cy.wait(8000);
|
|
||||||
// verify ChildPage is not on master
|
// verify ChildPage is not on master
|
||||||
cy.switchGitBranch(mainBranch);
|
cy.switchGitBranch(mainBranch);
|
||||||
cy.CheckAndUnfoldEntityItem("PAGES");
|
cy.CheckAndUnfoldEntityItem("PAGES");
|
||||||
|
|
@ -48,6 +59,185 @@ describe("Git sync Bugs", function() {
|
||||||
cy.CheckAndUnfoldEntityItem("PAGES");
|
cy.CheckAndUnfoldEntityItem("PAGES");
|
||||||
cy.get(`.t--entity-name:contains("${pagename}")`).should("not.exist");
|
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(() => {
|
after(() => {
|
||||||
cy.deleteTestGithubRepo(repoName);
|
cy.deleteTestGithubRepo(repoName);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,11 @@ describe("FirstTimeUserOnboarding", function() {
|
||||||
.should("be.visible")
|
.should("be.visible")
|
||||||
.wait(800);
|
.wait(800);
|
||||||
cy.reload();
|
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.statusbar).should("be.visible");
|
||||||
cy.get(OnboardingLocator.textWidgetName).should("be.visible");
|
cy.get(OnboardingLocator.textWidgetName).should("be.visible");
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ describe("Undo/Redo functionality", function() {
|
||||||
cy.get("body").click(0, 0);
|
cy.get("body").click(0, 0);
|
||||||
cy.get("body").type(`{${modifierKey}}z`);
|
cy.get("body").type(`{${modifierKey}}z`);
|
||||||
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(apiwidget.headers).should("have.class", "react-tabs__tab--selected");
|
||||||
cy.get("body").type(`{${modifierKey}}z`);
|
cy.get("body").type(`{${modifierKey}}z`);
|
||||||
cy.get(`${apiwidget.resourceUrl} .CodeMirror-placeholder`).should(
|
cy.get(`${apiwidget.resourceUrl} .CodeMirror-placeholder`).should(
|
||||||
|
|
|
||||||
|
|
@ -955,7 +955,7 @@ Cypress.Commands.add("startServerAndRoutes", () => {
|
||||||
cy.route("POST", "api/v1/git/connect/*").as("connectGitRepo");
|
cy.route("POST", "api/v1/git/connect/*").as("connectGitRepo");
|
||||||
cy.route("POST", "api/v1/git/commit/*").as("commit");
|
cy.route("POST", "api/v1/git/commit/*").as("commit");
|
||||||
cy.route("POST", "/api/v1/git/import/*").as("importFromGit");
|
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("PUT", "api/v1/collections/actions/refactor").as("renameJsAction");
|
||||||
|
|
||||||
cy.route("POST", "/api/v1/collections/actions").as("createNewJSCollection");
|
cy.route("POST", "/api/v1/collections/actions").as("createNewJSCollection");
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ const {
|
||||||
import gitSyncLocators from "../locators/gitSyncLocators";
|
import gitSyncLocators from "../locators/gitSyncLocators";
|
||||||
import homePage from "../locators/HomePage";
|
import homePage from "../locators/HomePage";
|
||||||
const commonLocators = require("../locators/commonlocators.json");
|
const commonLocators = require("../locators/commonlocators.json");
|
||||||
|
|
||||||
const GITHUB_API_BASE = "https://api.github.com";
|
const GITHUB_API_BASE = "https://api.github.com";
|
||||||
|
|
||||||
Cypress.Commands.add("revokeAccessGit", (appName) => {
|
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) => {
|
Cypress.Commands.add("createGitBranch", (branch) => {
|
||||||
cy.get(gitSyncLocators.branchButton).click({ force: true });
|
cy.get(gitSyncLocators.branchButton).click({ force: true });
|
||||||
|
|
@ -208,7 +227,6 @@ Cypress.Commands.add("commitAndPush", (assertFailure) => {
|
||||||
cy.get(homePage.publishButton).click();
|
cy.get(homePage.publishButton).click();
|
||||||
cy.get(gitSyncLocators.commitCommentInput).type("Initial Commit");
|
cy.get(gitSyncLocators.commitCommentInput).type("Initial Commit");
|
||||||
cy.get(gitSyncLocators.commitButton).click();
|
cy.get(gitSyncLocators.commitButton).click();
|
||||||
|
|
||||||
if (!assertFailure) {
|
if (!assertFailure) {
|
||||||
// check for commit success
|
// check for commit success
|
||||||
cy.wait("@commit").should(
|
cy.wait("@commit").should(
|
||||||
|
|
@ -216,6 +234,7 @@ Cypress.Commands.add("commitAndPush", (assertFailure) => {
|
||||||
"response.body.responseMeta.status",
|
"response.body.responseMeta.status",
|
||||||
201,
|
201,
|
||||||
);
|
);
|
||||||
|
cy.wait(2000);
|
||||||
} else {
|
} else {
|
||||||
cy.wait("@commit").then((interception) => {
|
cy.wait("@commit").then((interception) => {
|
||||||
const status = interception.response.body.responseMeta.status;
|
const status = interception.response.body.responseMeta.status;
|
||||||
|
|
@ -265,6 +284,12 @@ Cypress.Commands.add("merge", (destinationBranch) => {
|
||||||
.click();
|
.click();
|
||||||
cy.contains(Cypress.env("MESSAGES").NO_MERGE_CONFLICT());
|
cy.contains(Cypress.env("MESSAGES").NO_MERGE_CONFLICT());
|
||||||
cy.get(gitSyncLocators.mergeCTA).click();
|
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(
|
Cypress.Commands.add(
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@ import {
|
||||||
MERGE,
|
MERGE,
|
||||||
MERGE_CHANGES,
|
MERGE_CHANGES,
|
||||||
MERGE_CONFLICT_ERROR,
|
MERGE_CONFLICT_ERROR,
|
||||||
|
MERGED_SUCCESSFULLY,
|
||||||
NO_MERGE_CONFLICT,
|
NO_MERGE_CONFLICT,
|
||||||
NONE_REVERSIBLE_MESSAGE,
|
NONE_REVERSIBLE_MESSAGE,
|
||||||
PASTE_SSH_URL_INFO,
|
PASTE_SSH_URL_INFO,
|
||||||
|
|
@ -271,6 +272,7 @@ describe("git-sync messages", () => {
|
||||||
key: "CHANGES_USER_AND_MIGRATION",
|
key: "CHANGES_USER_AND_MIGRATION",
|
||||||
value: "Appsmith update and user changes since last commit",
|
value: "Appsmith update and user changes since last commit",
|
||||||
},
|
},
|
||||||
|
{ key: "MERGED_SUCCESSFULLY", value: "Merged successfully" },
|
||||||
];
|
];
|
||||||
const functions = [
|
const functions = [
|
||||||
CANNOT_MERGE_DUE_TO_UNCOMMITTED_CHANGES,
|
CANNOT_MERGE_DUE_TO_UNCOMMITTED_CHANGES,
|
||||||
|
|
@ -319,6 +321,7 @@ describe("git-sync messages", () => {
|
||||||
MERGE_CONFLICT_ERROR,
|
MERGE_CONFLICT_ERROR,
|
||||||
NONE_REVERSIBLE_MESSAGE,
|
NONE_REVERSIBLE_MESSAGE,
|
||||||
NO_MERGE_CONFLICT,
|
NO_MERGE_CONFLICT,
|
||||||
|
MERGED_SUCCESSFULLY,
|
||||||
PASTE_SSH_URL_INFO,
|
PASTE_SSH_URL_INFO,
|
||||||
PULL_CHANGES,
|
PULL_CHANGES,
|
||||||
REGENERATE_KEY_CONFIRM_MESSAGE,
|
REGENERATE_KEY_CONFIRM_MESSAGE,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user