test: Add tests for git sync app and git bugs (#13394)
* Add tests for gitSync * add test for git import bug#12749 * modified importAppfromGit method * add test for bug #13385 * updated tests * fixed test Co-authored-by: Parthvi Goswami <parthvigoswami@Parthvis-MacBook-Pro.local>
This commit is contained in:
parent
4596a12bfd
commit
2f4ca6aa98
|
|
@ -0,0 +1,29 @@
|
||||||
|
import homePage from "../../../../locators/HomePage";
|
||||||
|
import gitSyncLocators from "../../../../locators/gitSyncLocators";
|
||||||
|
|
||||||
|
describe("Git import empty repository", function() {
|
||||||
|
let repoName;
|
||||||
|
const assertConnectFailure = true;
|
||||||
|
const failureMessage =
|
||||||
|
"git import failed. \nDetails: Cannot import app from an empty repo";
|
||||||
|
|
||||||
|
it("Bug #12749 Git Import - Empty Repo NullPointerException", () => {
|
||||||
|
cy.get(homePage.homeIcon).click();
|
||||||
|
cy.get(homePage.optionsIcon)
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
cy.get(homePage.orgImportAppOption).click({ force: true });
|
||||||
|
cy.get(".t--import-json-card")
|
||||||
|
.next()
|
||||||
|
.click();
|
||||||
|
cy.generateUUID().then((uid) => {
|
||||||
|
repoName = uid;
|
||||||
|
cy.createTestGithubRepo(repoName);
|
||||||
|
cy.importAppFromGit(repoName, true, failureMessage);
|
||||||
|
});
|
||||||
|
cy.get(gitSyncLocators.closeGitSyncModal).click();
|
||||||
|
});
|
||||||
|
after(() => {
|
||||||
|
cy.deleteTestGithubRepo(repoName);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
@ -242,3 +242,46 @@ describe("Git synced app with JSObject", function() {
|
||||||
cy.deleteTestGithubRepo(repoName);
|
cy.deleteTestGithubRepo(repoName);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
describe("Git sync Bug #13385", function() {
|
||||||
|
it("Bug:13385 : Unable to see application in home page after the git connect flow is aborted in middle", () => {
|
||||||
|
cy.NavigateToHome();
|
||||||
|
cy.createOrg();
|
||||||
|
cy.wait("@createOrg").then((interception) => {
|
||||||
|
const newOrganizationName = interception.response.body.data.name;
|
||||||
|
cy.CreateAppForOrg(newOrganizationName, `${newOrganizationName}app`);
|
||||||
|
|
||||||
|
cy.generateUUID().then((uid) => {
|
||||||
|
const owner = Cypress.env("TEST_GITHUB_USER_NAME");
|
||||||
|
repoName = uid;
|
||||||
|
cy.createTestGithubRepo(repoName);
|
||||||
|
|
||||||
|
// open gitSync modal
|
||||||
|
cy.get(homePage.deployPopupOptionTrigger).click();
|
||||||
|
cy.get(homePage.connectToGitBtn).click({ force: true });
|
||||||
|
|
||||||
|
cy.intercept(
|
||||||
|
{
|
||||||
|
url: "api/v1/git/connect/*",
|
||||||
|
hostname: window.location.host,
|
||||||
|
},
|
||||||
|
(req) => {
|
||||||
|
req.headers["origin"] = "Cypress";
|
||||||
|
},
|
||||||
|
);
|
||||||
|
cy.intercept("POST", "/api/v1/applications/ssh-keypair/*").as(
|
||||||
|
`generateKey-${repoName}`,
|
||||||
|
);
|
||||||
|
cy.get(gitSyncLocators.gitRepoInput).type(
|
||||||
|
`git@github.com:${owner}/${repoName}.git`,
|
||||||
|
);
|
||||||
|
// abort git flow after generating key
|
||||||
|
cy.get(gitSyncLocators.closeGitSyncModal).click();
|
||||||
|
});
|
||||||
|
// verify app is visible and open
|
||||||
|
cy.NavigateToHome();
|
||||||
|
cy.reload();
|
||||||
|
cy.wait(3000);
|
||||||
|
cy.SearchApp(`${newOrganizationName}app`);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,528 @@
|
||||||
|
const pages = require("../../../../locators/Pages.json");
|
||||||
|
const generatePage = require("../../../../locators/GeneratePage.json");
|
||||||
|
const explorer = require("../../../../locators/explorerlocators.json");
|
||||||
|
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
|
||||||
|
const dynamicInputLocators = require("../../../../locators/DynamicInput.json");
|
||||||
|
const queryLocators = require("../../../../locators/QueryEditor.json");
|
||||||
|
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||||
|
import jsActions from "../../../../locators/jsActionLocators";
|
||||||
|
import gitSyncLocators from "../../../../locators/gitSyncLocators";
|
||||||
|
import ApiEditor from "../../../../locators/ApiEditor";
|
||||||
|
import homePage from "../../../../locators/HomePage";
|
||||||
|
import datasource from "../../../../locators/DatasourcesEditor.json";
|
||||||
|
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
|
||||||
|
const ee = ObjectsRegistry.EntityExplorer;
|
||||||
|
const newPage = "ApiCalls_1";
|
||||||
|
const pageName = "crudpage_1";
|
||||||
|
const tempBranch = "feat/tempBranch";
|
||||||
|
const tempBranch1 = "feat/testing";
|
||||||
|
const tempBranch0 = "test/tempBranch0";
|
||||||
|
const mainBranch = "master";
|
||||||
|
let datasourceName;
|
||||||
|
let repoName;
|
||||||
|
|
||||||
|
describe("Git sync apps", function() {
|
||||||
|
before(() => {
|
||||||
|
// cy.NavigateToHome();
|
||||||
|
// cy.createOrg();
|
||||||
|
// cy.wait("@createOrg").then((interception) => {
|
||||||
|
// const newOrganizationName = interception.response.body.data.name;
|
||||||
|
// cy.CreateAppForOrg(newOrganizationName, "gitSyncApp");
|
||||||
|
});
|
||||||
|
it("Generate postgreSQL crud page , connect to git, clone the page, rename page with special character in it", () => {
|
||||||
|
cy.NavigateToHome();
|
||||||
|
cy.get(homePage.createNew)
|
||||||
|
.first()
|
||||||
|
.click({ force: true });
|
||||||
|
|
||||||
|
cy.wait("@createNewApplication").should(
|
||||||
|
"have.nested.property",
|
||||||
|
"response.body.responseMeta.status",
|
||||||
|
201,
|
||||||
|
);
|
||||||
|
|
||||||
|
// create New App and generate Postgres CRUD page
|
||||||
|
cy.get(generatePage.generateCRUDPageActionCard).click();
|
||||||
|
|
||||||
|
cy.get(generatePage.selectDatasourceDropdown).click();
|
||||||
|
|
||||||
|
cy.contains("Connect New Datasource").click();
|
||||||
|
|
||||||
|
cy.get(datasource.PostgreSQL).click();
|
||||||
|
|
||||||
|
cy.fillPostgresDatasourceForm();
|
||||||
|
|
||||||
|
cy.generateUUID().then((UUID) => {
|
||||||
|
datasourceName = `${UUID}`;
|
||||||
|
cy.renameDatasource(datasourceName);
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.get(".t--save-datasource").click();
|
||||||
|
cy.wait("@saveDatasource").should(
|
||||||
|
"have.nested.property",
|
||||||
|
"response.body.responseMeta.status",
|
||||||
|
200,
|
||||||
|
);
|
||||||
|
|
||||||
|
cy.wait("@getDatasourceStructure").should(
|
||||||
|
"have.nested.property",
|
||||||
|
"response.body.responseMeta.status",
|
||||||
|
200,
|
||||||
|
);
|
||||||
|
|
||||||
|
cy.get(generatePage.selectTableDropdown).click();
|
||||||
|
|
||||||
|
cy.get(generatePage.dropdownOption)
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
// skip optional search column selection.
|
||||||
|
cy.get(generatePage.generatePageFormSubmitBtn).click();
|
||||||
|
|
||||||
|
cy.wait("@replaceLayoutWithCRUDPage").should(
|
||||||
|
"have.nested.property",
|
||||||
|
"response.body.responseMeta.status",
|
||||||
|
201,
|
||||||
|
);
|
||||||
|
cy.wait("@getActions");
|
||||||
|
cy.wait("@postExecute").should(
|
||||||
|
"have.nested.property",
|
||||||
|
"response.body.responseMeta.status",
|
||||||
|
200,
|
||||||
|
);
|
||||||
|
|
||||||
|
cy.get("span:contains('GOT IT')").click();
|
||||||
|
// connect app to git
|
||||||
|
cy.generateUUID().then((uid) => {
|
||||||
|
repoName = uid;
|
||||||
|
|
||||||
|
cy.createTestGithubRepo(repoName);
|
||||||
|
cy.connectToGitRepo(repoName);
|
||||||
|
});
|
||||||
|
// rename page to crud_page
|
||||||
|
cy.renameEntity("Page1", pageName);
|
||||||
|
cy.get(`.t--entity-name:contains(${pageName})`)
|
||||||
|
.trigger("mouseover")
|
||||||
|
.click({ force: true });
|
||||||
|
// create a clone of page
|
||||||
|
cy.get(`.t--entity-item:contains(${pageName})`).within(() => {
|
||||||
|
cy.get(".t--context-menu").click({ force: true });
|
||||||
|
});
|
||||||
|
cy.selectAction("Clone");
|
||||||
|
|
||||||
|
cy.wait("@clonePage").should(
|
||||||
|
"have.nested.property",
|
||||||
|
"response.body.responseMeta.status",
|
||||||
|
201,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it("Create api queries from api pane and cURL import , bind it to widget and clone page from page settings", () => {
|
||||||
|
cy.Createpage(newPage);
|
||||||
|
cy.get(`.t--entity-item:contains(${newPage})`).click();
|
||||||
|
cy.wait(1000);
|
||||||
|
// create a get api call
|
||||||
|
cy.NavigateToAPI_Panel();
|
||||||
|
cy.CreateAPI("get_data");
|
||||||
|
// creating get request using echo
|
||||||
|
cy.enterDatasourceAndPath("https://mock-api.appsmith.com/echo", "/get");
|
||||||
|
cy.get(apiwidget.headerKey).type("info");
|
||||||
|
cy.xpath("//span[text()='Key']").click();
|
||||||
|
// entering the data in header
|
||||||
|
cy.get(apiwidget.headerValue).type("This is a test", {
|
||||||
|
parseSpecialCharSequences: false,
|
||||||
|
});
|
||||||
|
cy.SaveAndRunAPI();
|
||||||
|
cy.ResponseStatusCheck("200");
|
||||||
|
cy.get(".bp3-icon-chevron-left").click();
|
||||||
|
// curl import
|
||||||
|
cy.get(pages.integrationCreateNew)
|
||||||
|
.should("be.visible")
|
||||||
|
.click({ force: true });
|
||||||
|
cy.get(ApiEditor.curlImage).click({ force: true });
|
||||||
|
cy.get("textarea").type(
|
||||||
|
'curl -d \'{"name":"morpheus","job":"leader"}\' -H Content-Type:application/json -X POST https://mock-api.appsmith.com/echo/post',
|
||||||
|
{
|
||||||
|
force: true,
|
||||||
|
parseSpecialCharSequences: false,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
cy.importCurl();
|
||||||
|
cy.RunAPI();
|
||||||
|
cy.ResponseStatusCheck("201 CREATED");
|
||||||
|
cy.get("@curlImport").then((response) => {
|
||||||
|
cy.expect(response.response.body.responseMeta.success).to.eq(true);
|
||||||
|
cy.get(apiwidget.ApiName)
|
||||||
|
.invoke("text")
|
||||||
|
.then((text) => {
|
||||||
|
const someText = text;
|
||||||
|
expect(someText).to.equal(response.response.body.data.name);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
cy.get(explorer.addWidget).click();
|
||||||
|
// bind input widgets to the api calls responses
|
||||||
|
cy.dragAndDropToCanvas("inputwidgetv2", { x: 300, y: 300 });
|
||||||
|
cy.get(".t--widget-inputwidgetv2").should("exist");
|
||||||
|
cy.get(dynamicInputLocators.input)
|
||||||
|
.eq(1)
|
||||||
|
.click({ force: true })
|
||||||
|
.type("{{Api1.data.body.name}}", { parseSpecialCharSequences: false });
|
||||||
|
cy.dragAndDropToCanvas("inputwidgetv2", { x: 300, y: 500 });
|
||||||
|
cy.get(".t--widget-inputwidgetv2").should("exist");
|
||||||
|
cy.get(dynamicInputLocators.input)
|
||||||
|
.eq(1)
|
||||||
|
.click({ force: true })
|
||||||
|
.type("{{get_data.data.headers.info}}", {
|
||||||
|
parseSpecialCharSequences: false,
|
||||||
|
});
|
||||||
|
cy.wait(2000);
|
||||||
|
// clone the page from page settings
|
||||||
|
cy.xpath("//span[contains(@class,'entity-right-icon')]").click({
|
||||||
|
force: true,
|
||||||
|
});
|
||||||
|
cy.xpath("(//button[@type='button'])")
|
||||||
|
.eq(9)
|
||||||
|
.click();
|
||||||
|
cy.wait("@clonePage").should(
|
||||||
|
"have.nested.property",
|
||||||
|
"response.body.responseMeta.status",
|
||||||
|
201,
|
||||||
|
);
|
||||||
|
cy.get(`.t--entity-item:contains(${newPage} Copy)`).click();
|
||||||
|
cy.wait("@getPage");
|
||||||
|
});
|
||||||
|
it("Commit and push changes, validate data binding on all pages in edit and deploy mode on master", () => {
|
||||||
|
// verfiy data binding on all pages in edit mode
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.first()
|
||||||
|
.should("have.value", "morpheus");
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.eq(1)
|
||||||
|
.should("have.value", "This is a test");
|
||||||
|
|
||||||
|
cy.get(`.t--entity-item:contains(${newPage})`)
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
cy.wait("@getPage");
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.first()
|
||||||
|
.should("have.value", "morpheus");
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.eq(1)
|
||||||
|
.should("have.value", "This is a test");
|
||||||
|
|
||||||
|
cy.get(`.t--entity-item:contains(${pageName} Copy)`).click();
|
||||||
|
cy.wait("@getPage");
|
||||||
|
cy.readTabledataPublish("0", "1").then((cellData) => {
|
||||||
|
expect(cellData).to.be.equal("New Config");
|
||||||
|
});
|
||||||
|
cy.get(`.t--entity-item:contains(${pageName})`)
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
cy.wait("@getPage");
|
||||||
|
cy.readTabledataPublish("0", "1").then((cellData) => {
|
||||||
|
expect(cellData).to.be.equal("New Config");
|
||||||
|
});
|
||||||
|
// commit and push the changes
|
||||||
|
cy.commitAndPush();
|
||||||
|
cy.wait(2000);
|
||||||
|
// verify data binding on all pages in deploy mode
|
||||||
|
cy.latestDeployPreview();
|
||||||
|
cy.readTabledataPublish("0", "1").then((cellData) => {
|
||||||
|
expect(cellData).to.be.equal("New Config");
|
||||||
|
});
|
||||||
|
cy.get(".t--page-switch-tab")
|
||||||
|
.contains(`${pageName} Copy`)
|
||||||
|
.click({ force: true });
|
||||||
|
cy.readTabledataPublish("0", "1").then((cellData) => {
|
||||||
|
expect(cellData).to.be.equal("New Config");
|
||||||
|
});
|
||||||
|
cy.get(".t--page-switch-tab")
|
||||||
|
.contains(`${newPage}`)
|
||||||
|
.click({ force: true });
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.first()
|
||||||
|
.should("have.value", "morpheus");
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.eq(1)
|
||||||
|
.should("have.value", "This is a test");
|
||||||
|
cy.get(".t--page-switch-tab")
|
||||||
|
.contains(`${newPage} Copy`)
|
||||||
|
.click({ force: true });
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.first()
|
||||||
|
.should("have.value", "morpheus");
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.eq(1)
|
||||||
|
.should("have.value", "This is a test");
|
||||||
|
cy.get(commonlocators.backToEditor).click();
|
||||||
|
cy.wait(2000);
|
||||||
|
});
|
||||||
|
it("Create a new branch tempBranch, add jsObject and datasource query, move them to new page i.e. Child_Page and bind to widgets", () => {
|
||||||
|
cy.createGitBranch(tempBranch);
|
||||||
|
cy.wait(1000);
|
||||||
|
// create jsObject and rename it
|
||||||
|
cy.createJSObject('return "Success";');
|
||||||
|
cy.wait(2000);
|
||||||
|
// create postgres select query
|
||||||
|
//cy.CheckAndUnfoldEntityItem("DATASOURCES");
|
||||||
|
cy.NavigateToQueryEditor();
|
||||||
|
cy.NavigateToActiveTab();
|
||||||
|
cy.get(datasource.datasourceCard)
|
||||||
|
.contains(datasourceName)
|
||||||
|
.scrollIntoView()
|
||||||
|
.should("be.visible")
|
||||||
|
.closest(datasource.datasourceCard)
|
||||||
|
.within(() => {
|
||||||
|
cy.get(datasource.createQuerty).click();
|
||||||
|
});
|
||||||
|
cy.get(queryLocators.queryNameField).type("get_users");
|
||||||
|
cy.get(queryLocators.switch)
|
||||||
|
.last()
|
||||||
|
.click({ force: true });
|
||||||
|
cy.get(queryLocators.templateMenu).click();
|
||||||
|
cy.get(queryLocators.query).click({ force: true });
|
||||||
|
// writing query to get the schema
|
||||||
|
cy.get(".CodeMirror textarea")
|
||||||
|
.first()
|
||||||
|
.focus()
|
||||||
|
.type("SELECT * FROM users ORDER BY id LIMIT 10;", {
|
||||||
|
force: true,
|
||||||
|
parseSpecialCharSequences: false,
|
||||||
|
});
|
||||||
|
cy.WaitAutoSave();
|
||||||
|
cy.runQuery();
|
||||||
|
// create a new page
|
||||||
|
cy.CheckAndUnfoldEntityItem("PAGES");
|
||||||
|
cy.Createpage("Child_Page");
|
||||||
|
cy.wait(1000);
|
||||||
|
cy.get(`.t--entity-name:contains(${newPage} Copy)`)
|
||||||
|
.trigger("mouseover")
|
||||||
|
.click({ force: true });
|
||||||
|
// move jsObject and postgres query to new page
|
||||||
|
cy.CheckAndUnfoldEntityItem("QUERIES/JS");
|
||||||
|
ee.ActionContextMenuByEntityName("get_users", "Move to page", "Child_Page");
|
||||||
|
cy.wait(2000);
|
||||||
|
cy.get(`.t--entity-name:contains(${newPage} Copy)`)
|
||||||
|
.trigger("mouseover")
|
||||||
|
.click({ force: true });
|
||||||
|
ee.ActionContextMenuByEntityName("JSObject1", "Move to page", "Child_Page");
|
||||||
|
cy.wait(2000);
|
||||||
|
cy.get(explorer.addWidget).click();
|
||||||
|
// bind input widgets to the jsObject and query response
|
||||||
|
cy.dragAndDropToCanvas("inputwidgetv2", { x: 300, y: 300 });
|
||||||
|
cy.get(".t--widget-inputwidgetv2").should("exist");
|
||||||
|
cy.get(dynamicInputLocators.input)
|
||||||
|
.eq(1)
|
||||||
|
.click({ force: true })
|
||||||
|
.type("{{JSObject1.myFun1()}}", { parseSpecialCharSequences: false });
|
||||||
|
cy.dragAndDropToCanvas("inputwidgetv2", { x: 300, y: 500 });
|
||||||
|
cy.get(".t--widget-inputwidgetv2").should("exist");
|
||||||
|
cy.get(dynamicInputLocators.input)
|
||||||
|
.eq(1)
|
||||||
|
.click({ force: true })
|
||||||
|
.type("{{get_users.data[0].name}}", {
|
||||||
|
parseSpecialCharSequences: false,
|
||||||
|
});
|
||||||
|
cy.wait(2000);
|
||||||
|
});
|
||||||
|
it("Commit and push changes, validate data binding on all pages in edit and deploy mode on tempBranch", () => {
|
||||||
|
// commit and push changes
|
||||||
|
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();
|
||||||
|
// verfiy data binding on all pages in deploy mode
|
||||||
|
cy.latestDeployPreview();
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.first()
|
||||||
|
.should("have.value", "Success");
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.eq(1)
|
||||||
|
.should("have.value", "Test user 7");
|
||||||
|
cy.get(".t--page-switch-tab")
|
||||||
|
.contains(`${pageName}`)
|
||||||
|
.click({ force: true });
|
||||||
|
cy.readTabledataPublish("0", "1").then((cellData) => {
|
||||||
|
expect(cellData).to.be.equal("New Config");
|
||||||
|
});
|
||||||
|
cy.get(".t--page-switch-tab")
|
||||||
|
.contains(`${pageName} Copy`)
|
||||||
|
.click({ force: true });
|
||||||
|
cy.readTabledataPublish("0", "1").then((cellData) => {
|
||||||
|
expect(cellData).to.be.equal("New Config");
|
||||||
|
});
|
||||||
|
cy.get(".t--page-switch-tab")
|
||||||
|
.contains(`${newPage}`)
|
||||||
|
.click({ force: true });
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.first()
|
||||||
|
.should("have.value", "morpheus");
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.eq(1)
|
||||||
|
.should("have.value", "This is a test");
|
||||||
|
cy.get(".t--page-switch-tab")
|
||||||
|
.contains(`${newPage} Copy`)
|
||||||
|
.click({ force: true });
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.first()
|
||||||
|
.should("have.value", "morpheus");
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.eq(1)
|
||||||
|
.should("have.value", "This is a test");
|
||||||
|
cy.get(commonlocators.backToEditor).click();
|
||||||
|
cy.wait(2000);
|
||||||
|
// verfiy data binding on all pages in edit mode
|
||||||
|
/* cy.get(".bp3-input")
|
||||||
|
.first()
|
||||||
|
.should("have.value", "morpheus");
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.eq(1)
|
||||||
|
.should("have.value", "This is a test");
|
||||||
|
cy.get(`.t--entity-item:contains(Child_Page)`)
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
cy.wait("@getPage");
|
||||||
|
cy.reload();
|
||||||
|
cy.wait(3000);
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.first()
|
||||||
|
.should("have.value", "Success");
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.eq(1)
|
||||||
|
.should("have.value", "Test user 7");
|
||||||
|
cy.get(`.t--entity-item:contains(${newPage})`)
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
cy.wait("@getPage");
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.first()
|
||||||
|
.should("have.value", "morpheus");
|
||||||
|
cy.get(".bp3-input")
|
||||||
|
.eq(1)
|
||||||
|
.should("have.value", "This is a test");
|
||||||
|
|
||||||
|
cy.get(`.t--entity-item:contains(${pageName} Copy)`).click();
|
||||||
|
cy.wait("@getPage");
|
||||||
|
cy.readTabledataPublish("0", "1").then((cellData) => {
|
||||||
|
expect(cellData).to.be.equal("New Config");
|
||||||
|
});
|
||||||
|
cy.get(`.t--entity-item:contains(${pageName})`)
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
cy.wait("@getPage");
|
||||||
|
cy.readTabledataPublish("0", "1").then((cellData) => {
|
||||||
|
expect(cellData).to.be.equal("New Config");
|
||||||
|
}); */
|
||||||
|
});
|
||||||
|
it("Switch to master and verify no uncommitted changes should be shown on master", () => {
|
||||||
|
cy.switchGitBranch("master");
|
||||||
|
cy.wait(2000);
|
||||||
|
// verify commit input box is disabled
|
||||||
|
cy.get(homePage.publishButton).click();
|
||||||
|
cy.get(".t--commit-comment-input")
|
||||||
|
.should("be.disabled")
|
||||||
|
.and("have.text", "No changes to commit");
|
||||||
|
cy.get(gitSyncLocators.closeGitSyncModal).click();
|
||||||
|
});
|
||||||
|
it("Switch to tempBranch , Clone the Child_Page, change it's visiblity to hidden and deploy, merge to master", () => {
|
||||||
|
cy.switchGitBranch(tempBranch);
|
||||||
|
cy.wait(2000);
|
||||||
|
// clone the Child_Page
|
||||||
|
cy.CheckAndUnfoldEntityItem("PAGES");
|
||||||
|
cy.get(`.t--entity-item:contains(Child_Page)`).within(() => {
|
||||||
|
cy.get(".t--context-menu").click({ force: true });
|
||||||
|
});
|
||||||
|
cy.selectAction("Clone");
|
||||||
|
cy.wait("@clonePage").should(
|
||||||
|
"have.nested.property",
|
||||||
|
"response.body.responseMeta.status",
|
||||||
|
201,
|
||||||
|
);
|
||||||
|
// change cloned page visiblity to hidden
|
||||||
|
cy.CheckAndUnfoldEntityItem("PAGES");
|
||||||
|
|
||||||
|
cy.get(`.t--entity-item:contains(Child_Page Copy)`).within(() => {
|
||||||
|
cy.get(".t--context-menu").click({ force: true });
|
||||||
|
});
|
||||||
|
cy.selectAction("Hide");
|
||||||
|
|
||||||
|
cy.get(`.t--entity-item:contains(Child_Page)`)
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
cy.wait("@getPage");
|
||||||
|
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.wait(2000);
|
||||||
|
cy.merge(mainBranch);
|
||||||
|
cy.get(gitSyncLocators.closeGitSyncModal).click();
|
||||||
|
cy.wait(2000);
|
||||||
|
cy.latestDeployPreview();
|
||||||
|
// verify page is hidden on deploy mode
|
||||||
|
cy.get(".t--page-switch-tab").should("not.contain", "Child_Page Copy");
|
||||||
|
cy.get(commonlocators.backToEditor).click();
|
||||||
|
cy.wait(2000);
|
||||||
|
});
|
||||||
|
it("Verify Page visiblity on master in edit and deploy mode", () => {
|
||||||
|
cy.switchGitBranch(mainBranch);
|
||||||
|
cy.wait(2000);
|
||||||
|
cy.latestDeployPreview();
|
||||||
|
cy.get(".t--page-switch-tab").should("not.contain", "Child_Page Copy");
|
||||||
|
cy.get(commonlocators.backToEditor).click();
|
||||||
|
cy.wait(2000);
|
||||||
|
});
|
||||||
|
it("Create new branch, delete a page and merge back to master, verify page is deleted on master", () => {
|
||||||
|
cy.createGitBranch(tempBranch1);
|
||||||
|
// delete page from page settings
|
||||||
|
cy.Deletepage("Child_Page Copy");
|
||||||
|
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.wait(2000);
|
||||||
|
cy.merge(mainBranch);
|
||||||
|
cy.get(gitSyncLocators.closeGitSyncModal).click();
|
||||||
|
// verify Child_Page is not on master
|
||||||
|
cy.switchGitBranch(mainBranch);
|
||||||
|
cy.CheckAndUnfoldEntityItem("PAGES");
|
||||||
|
cy.get(`.t--entity-name:contains("Child_Page Copy")`).should("not.exist");
|
||||||
|
// create another branch and verify deleted page doesn't exist on it
|
||||||
|
cy.createGitBranch(tempBranch0);
|
||||||
|
cy.CheckAndUnfoldEntityItem("PAGES");
|
||||||
|
cy.get(`.t--entity-name:contains("Child_Page Copy")`).should("not.exist");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Import app from git and verify page order should not change", () => {
|
||||||
|
cy.get(homePage.homeIcon).click();
|
||||||
|
cy.get(homePage.optionsIcon)
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
cy.get(homePage.orgImportAppOption).click({ force: true });
|
||||||
|
cy.get(".t--import-json-card")
|
||||||
|
.next()
|
||||||
|
.click();
|
||||||
|
// import application from git
|
||||||
|
cy.importAppFromGit(repoName);
|
||||||
|
cy.wait(2000);
|
||||||
|
// verify page order remains same as in orignal app
|
||||||
|
cy.CheckAndUnfoldEntityItem("PAGES");
|
||||||
|
cy.get(".t--entity-item")
|
||||||
|
.eq(1)
|
||||||
|
.contains("crudpage_1");
|
||||||
|
cy.get(".t--entity-item")
|
||||||
|
.eq(2)
|
||||||
|
.contains("crudpage_1 Copy");
|
||||||
|
cy.get(".t--entity-item")
|
||||||
|
.eq(3)
|
||||||
|
.contains("ApiCalls_1");
|
||||||
|
cy.get(".t--entity-item")
|
||||||
|
.eq(4)
|
||||||
|
.contains("ApiCalls_1 Copy");
|
||||||
|
cy.get(".t--entity-item")
|
||||||
|
.eq(5)
|
||||||
|
.contains("Child_Page");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
@ -4,13 +4,9 @@
|
||||||
|
|
||||||
require("cy-verify-downloads").addCustomCommand();
|
require("cy-verify-downloads").addCustomCommand();
|
||||||
require("cypress-file-upload");
|
require("cypress-file-upload");
|
||||||
|
|
||||||
const {
|
|
||||||
addMatchImageSnapshotCommand,
|
|
||||||
} = require("cypress-image-snapshot/command");
|
|
||||||
import homePage from "../locators/HomePage";
|
import homePage from "../locators/HomePage";
|
||||||
const generatePage = require("../locators/GeneratePage.json");
|
const generatePage = require("../locators/GeneratePage.json");
|
||||||
|
import explorer from "../locators/explorerlocators";
|
||||||
export const initLocalstorage = () => {
|
export const initLocalstorage = () => {
|
||||||
cy.window().then((window) => {
|
cy.window().then((window) => {
|
||||||
window.localStorage.setItem("ShowCommentsButtonToolTip", "");
|
window.localStorage.setItem("ShowCommentsButtonToolTip", "");
|
||||||
|
|
@ -302,3 +298,12 @@ Cypress.Commands.add("CreateAppInFirstListedOrg", (appname) => {
|
||||||
*/
|
*/
|
||||||
cy.wait("@updateLayout");
|
cy.wait("@updateLayout");
|
||||||
});
|
});
|
||||||
|
Cypress.Commands.add("renameEntity", (entityName, renamedEntity) => {
|
||||||
|
cy.get(`.t--entity-item:contains(${entityName})`).within(() => {
|
||||||
|
cy.get(".t--context-menu").click({ force: true });
|
||||||
|
});
|
||||||
|
cy.selectAction("Edit Name");
|
||||||
|
cy.get(explorer.editEntity)
|
||||||
|
.last()
|
||||||
|
.type(`${renamedEntity}`, { force: true });
|
||||||
|
});
|
||||||
|
|
|
||||||
|
|
@ -294,7 +294,7 @@ Cypress.Commands.add("merge", (destinationBranch) => {
|
||||||
|
|
||||||
Cypress.Commands.add(
|
Cypress.Commands.add(
|
||||||
"importAppFromGit",
|
"importAppFromGit",
|
||||||
(repo, shouldCommit = true, assertConnectFailure) => {
|
(repo, assertConnectFailure, failureMessage) => {
|
||||||
const testEmail = "test@test.com";
|
const testEmail = "test@test.com";
|
||||||
const testUsername = "testusername";
|
const testUsername = "testusername";
|
||||||
const owner = Cypress.env("TEST_GITHUB_USER_NAME");
|
const owner = Cypress.env("TEST_GITHUB_USER_NAME");
|
||||||
|
|
@ -353,7 +353,9 @@ Cypress.Commands.add(
|
||||||
} else {
|
} else {
|
||||||
cy.wait("@importFromGit").then((interception) => {
|
cy.wait("@importFromGit").then((interception) => {
|
||||||
const status = interception.response.body.responseMeta.status;
|
const status = interception.response.body.responseMeta.status;
|
||||||
|
const message = interception.response.body.responseMeta.error.message;
|
||||||
expect(status).to.be.gte(400);
|
expect(status).to.be.gte(400);
|
||||||
|
expect(message).to.contain(failureMessage);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user