Merge pull request #28933 from appsmithorg/release_v1.9.47
chore: Release v1.9.47
This commit is contained in:
commit
4cfbc94ba8
2
.github/config.json
vendored
2
.github/config.json
vendored
File diff suppressed because one or more lines are too long
|
|
@ -32,7 +32,10 @@ RUN cd ./utils && npm install --only=prod && npm install --only=prod -g . && cd
|
|||
&& chmod +x *.sh templates/nginx-app.conf.sh /watchtower-hooks/*.sh \
|
||||
# Disable setuid/setgid bits for the files inside container.
|
||||
&& find / \( -path /proc -prune \) -o \( \( -perm -2000 -o -perm -4000 \) -print -exec chmod -s '{}' + \) || true \
|
||||
&& node prepare-image.mjs
|
||||
&& node prepare-image.mjs \
|
||||
&& mkdir -p /.mongodb/mongosh /appsmith-stacks \
|
||||
&& chmod ugo+w /etc /appsmith-stacks \
|
||||
&& chmod -R ugo+w /var/lib/nginx /var/log/nginx /var/run /usr/sbin/cron /.mongodb /etc/ssl /usr/local/share
|
||||
|
||||
LABEL com.centurylinklabs.watchtower.lifecycle.pre-check=/watchtower-hooks/pre-check.sh
|
||||
LABEL com.centurylinklabs.watchtower.lifecycle.pre-update=/watchtower-hooks/pre-update.sh
|
||||
|
|
|
|||
20
README.md
20
README.md
|
|
@ -93,40 +93,38 @@ Let's build great software together.
|
|||
[](https://github.com/ayushpahwa)
|
||||
[](https://github.com/sneha122)
|
||||
[](https://github.com/ApekshaBhosale)
|
||||
[](https://github.com/yatinappsmith)
|
||||
[](https://github.com/Parthvi12)
|
||||
[](https://github.com/yatinappsmith)
|
||||
[](https://github.com/somangshu)
|
||||
[](https://github.com/pratapaprasanna)
|
||||
[](https://github.com/pranavkanade)
|
||||
[](https://github.com/marks0351)
|
||||
[](https://github.com/albinAppsmith)
|
||||
[](https://github.com/marks0351)
|
||||
[](https://github.com/nsarupr)
|
||||
[](https://github.com/ashit-rath)
|
||||
[](https://github.com/sondermanish)
|
||||
[](https://github.com/NilanshBansal)
|
||||
[](https://github.com/sondermanish)
|
||||
[](https://github.com/KelvinOm)
|
||||
[](https://github.com/dhruvikn)
|
||||
[](https://github.com/rajatagrawal)
|
||||
[](https://github.com/KelvinOm)
|
||||
[](https://github.com/areyabhishek)
|
||||
[](https://github.com/Druthi)
|
||||
[](https://github.com/subrata71)
|
||||
[](https://github.com/ichik)
|
||||
[](https://github.com/dipyamanbiswas07)
|
||||
[](https://github.com/rahulbarwal)
|
||||
[](https://github.com/ankitsrivas14)
|
||||
[](https://github.com/vsvamsi1)
|
||||
[](https://github.com/sharanya-appsmith)
|
||||
[](https://github.com/brayn003)
|
||||
[](https://github.com/shubham7saxena7)
|
||||
[](https://github.com/dvj1988)
|
||||
[](https://github.com/sharanya-appsmith)
|
||||
[](https://github.com/vivonk)
|
||||
[](https://github.com/dvj1988)
|
||||
[](https://github.com/ramsaptami)
|
||||
[](https://github.com/rohan-arthur)
|
||||
[](https://github.com/jacquesikot)
|
||||
[](https://github.com/danciaclara)
|
||||
[](https://github.com/kocharrahul7)
|
||||
[](https://github.com/riteshkew)
|
||||
[](https://github.com/srix)
|
||||
[](https://github.com/jacquesikot)
|
||||
[](https://github.com/laveena-en)
|
||||
[](https://github.com/RakshaKShetty)
|
||||
[](https://github.com/Rishabhkaul)
|
||||
|
|
@ -169,6 +167,7 @@ Let's build great software together.
|
|||
[](https://github.com/kavitasmoolya)
|
||||
[](https://github.com/NeelPattani1)
|
||||
[](https://github.com/rashmi-sahoo-git)
|
||||
[](https://github.com/michael-peach-appsmith)
|
||||
[](https://github.com/akash-codemonk)
|
||||
[](https://github.com/Tooluloope)
|
||||
[](https://github.com/rishabhsaxena)
|
||||
|
|
@ -194,6 +193,7 @@ Let's build great software together.
|
|||
[](https://github.com/tanvibhakta)
|
||||
[](https://github.com/rashmigowda55)
|
||||
[](https://github.com/ankurrsinghal)
|
||||
[](https://github.com/Druthi)
|
||||
[](https://github.com/geekup-legodevops)
|
||||
[](https://github.com/megaconfidence)
|
||||
[](https://github.com/vihar)
|
||||
|
|
@ -216,6 +216,7 @@ Let's build great software together.
|
|||
[](https://github.com/iamakulov)
|
||||
[](https://github.com/iamrkcheers)
|
||||
[](https://github.com/sumanthyedoti)
|
||||
[](https://github.com/shubham7saxena7)
|
||||
[](https://github.com/vaibh1297)
|
||||
[](https://github.com/vnodecg)
|
||||
[](https://github.com/pc9795)
|
||||
|
|
@ -345,6 +346,7 @@ Let's build great software together.
|
|||
[](https://github.com/Sufiyan1997)
|
||||
[](https://github.com/rayrny)
|
||||
[](https://github.com/trishitapingolia)
|
||||
[](https://github.com/trivikr)
|
||||
[](https://github.com/webdott)
|
||||
[](https://github.com/vasanthkumar18)
|
||||
[](https://github.com/VanshajPoonia)
|
||||
|
|
|
|||
|
|
@ -170,6 +170,7 @@ describe("Shopping cart App", function () {
|
|||
);
|
||||
agHelper.GetNClick(appPage.addButton, 0, true);
|
||||
assertHelper.AssertNetworkStatus("@postExecute");
|
||||
agHelper.Sleep(3000);
|
||||
// Deleting the book from the cart
|
||||
agHelper.GetNClick(appPage.deleteButton, 1, false);
|
||||
assertHelper.AssertNetworkStatus("@postExecute");
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ import {
|
|||
propPane,
|
||||
deployMode,
|
||||
debuggerHelper,
|
||||
locators,
|
||||
draggableWidgets,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
|
||||
describe("storeValue Action test", () => {
|
||||
|
|
@ -52,6 +54,9 @@ describe("storeValue Action test", () => {
|
|||
});
|
||||
|
||||
deployMode.DeployApp();
|
||||
agHelper.AssertElementVisibility(
|
||||
locators._widgetInDeployed(draggableWidgets.BUTTON),
|
||||
);
|
||||
agHelper.ClickButton("StoreTest");
|
||||
agHelper.AssertContains(
|
||||
JSON.stringify({
|
||||
|
|
|
|||
|
|
@ -1,12 +1,15 @@
|
|||
import {
|
||||
agHelper,
|
||||
locators,
|
||||
entityExplorer,
|
||||
propPane,
|
||||
appSettings,
|
||||
autoLayout,
|
||||
draggableWidgets,
|
||||
entityExplorer,
|
||||
locators,
|
||||
propPane,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("Validating multiple widgets in auto layout mode with App navigation settings", function () {
|
||||
it("1. Drag and Drop multiple widgets in auto layout mode", function () {
|
||||
|
|
@ -19,13 +22,13 @@ describe("Validating multiple widgets in auto layout mode with App navigation se
|
|||
|
||||
it("2. Change App navigation settings and valdiate the layout settings", () => {
|
||||
entityExplorer.SelectEntityByName("Page1", "Pages");
|
||||
agHelper.GetNClick(appSettings.locators._appSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
agHelper.GetNClick(appSettings.locators._navigationSettingsTab);
|
||||
agHelper.GetNClick(
|
||||
appSettings.locators._navigationSettings._orientationOptions._side,
|
||||
);
|
||||
agHelper.AssertElementExist(appSettings.locators._sideNavbar);
|
||||
agHelper.GetNClick(locators._canvas);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
agHelper.AssertElementExist(locators._widgetInCanvas("inputwidgetv2"));
|
||||
agHelper.AssertElementExist(locators._widgetInCanvas("inputwidgetv2"), 1);
|
||||
agHelper.AssertElementExist(locators._fixedLayout);
|
||||
|
|
|
|||
|
|
@ -1,18 +1,22 @@
|
|||
import {
|
||||
agHelper,
|
||||
locators,
|
||||
entityExplorer,
|
||||
propPane,
|
||||
deployMode,
|
||||
appSettings,
|
||||
autoLayout,
|
||||
deployMode,
|
||||
draggableWidgets,
|
||||
entityExplorer,
|
||||
locators,
|
||||
propPane,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
let currentUrl: string;
|
||||
|
||||
describe("Page orientation and navigation related usecases ", function () {
|
||||
it("1. Change 'Orientation' to 'Side', sidebar should appear", () => {
|
||||
agHelper.GetNClick(appSettings.locators._appSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
agHelper.GetNClick(appSettings.locators._navigationSettingsTab);
|
||||
agHelper.GetNClick(
|
||||
appSettings.locators._navigationSettings._orientationOptions._side,
|
||||
|
|
|
|||
|
|
@ -5,10 +5,13 @@ import {
|
|||
deployMode,
|
||||
appSettings,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("Test app's navigation settings", function () {
|
||||
it("1. Open app settings and navigation tab should be there and when the navigation tab is selected, navigation preview should be visible", () => {
|
||||
agHelper.GetNClick(appSettings.locators._appSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
agHelper.AssertElementVisibility(
|
||||
appSettings.locators._navigationSettingsTab,
|
||||
);
|
||||
|
|
@ -34,7 +37,7 @@ describe("Test app's navigation settings", function () {
|
|||
//Browser back is used as the Navbar is off and there wont be option to come back to editor
|
||||
agHelper.BrowserNavigation(-1);
|
||||
// Wait for the app to load
|
||||
agHelper.GetNClick(appSettings.locators._appSettings, 0, true);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
agHelper.GetNClick(appSettings.locators._navigationSettingsTab);
|
||||
// Toggle show navbar back to on
|
||||
agHelper.GetNClick(
|
||||
|
|
@ -60,7 +63,7 @@ describe("Test app's navigation settings", function () {
|
|||
|
||||
it("4. Change 'Orientation' back to 'Top', and 'Nav style' to 'Inline', page navigation items should appear inline", () => {
|
||||
entityExplorer.AddNewPage();
|
||||
agHelper.GetNClick(appSettings.locators._appSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
agHelper.GetNClick(appSettings.locators._navigationSettingsTab);
|
||||
agHelper.GetNClick(
|
||||
appSettings.locators._navigationSettings._orientationOptions._top,
|
||||
|
|
|
|||
|
|
@ -4,11 +4,14 @@ import {
|
|||
appSettings,
|
||||
locators,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("Test Sidebar Collapse", function () {
|
||||
it("1. Sidebar collapse button should be there", () => {
|
||||
// First make sure that nav orientation is set to side
|
||||
agHelper.GetNClick(appSettings.locators._appSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
agHelper.GetNClick(appSettings.locators._navigationSettingsTab);
|
||||
agHelper.GetNClick(
|
||||
appSettings.locators._navigationSettings._orientationOptions._side,
|
||||
|
|
|
|||
|
|
@ -6,6 +6,9 @@ import {
|
|||
assertHelper,
|
||||
locators,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("Test Sidebar navigation style", function () {
|
||||
before(() => {
|
||||
|
|
@ -26,7 +29,7 @@ describe("Test Sidebar navigation style", function () {
|
|||
});
|
||||
|
||||
it("1. Change 'Orientation' to 'Side', sidebar should appear", () => {
|
||||
agHelper.GetNClick(appSettings.locators._appSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
agHelper.GetNClick(appSettings.locators._navigationSettingsTab);
|
||||
agHelper.GetNClick(
|
||||
appSettings.locators._navigationSettings._orientationOptions._side,
|
||||
|
|
@ -60,7 +63,7 @@ describe("Test Sidebar navigation style", function () {
|
|||
);
|
||||
// Changing color style to theme should change navigation's background color
|
||||
deployMode.NavigateBacktoEditor();
|
||||
agHelper.GetNClick(appSettings.locators._appSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
agHelper.GetNClick(appSettings.locators._navigationSettingsTab);
|
||||
agHelper.GetNClick(appSettings.locators._colorStyleOptions._theme, 0, true);
|
||||
deployMode.DeployApp();
|
||||
|
|
|
|||
|
|
@ -6,6 +6,9 @@ import {
|
|||
appSettings,
|
||||
locators,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("Test Top + Inline navigation style", function () {
|
||||
before(() => {
|
||||
|
|
@ -27,7 +30,7 @@ describe("Test Top + Inline navigation style", function () {
|
|||
});
|
||||
|
||||
it("1. Change 'Orientation' to 'Top', and 'Nav style' to 'Inline', page navigation items should appear inline", () => {
|
||||
agHelper.GetNClick(appSettings.locators._appSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
agHelper.GetNClick(appSettings.locators._navigationSettingsTab);
|
||||
agHelper.GetNClick(
|
||||
appSettings.locators._navigationSettings._orientationOptions._top,
|
||||
|
|
@ -101,7 +104,7 @@ describe("Test Top + Inline navigation style", function () {
|
|||
);
|
||||
// Changing color style to theme should change navigation's background color
|
||||
deployMode.NavigateBacktoEditor();
|
||||
agHelper.GetNClick(appSettings.locators._appSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
agHelper.GetNClick(appSettings.locators._navigationSettingsTab);
|
||||
agHelper.GetNClick(appSettings.locators._colorStyleOptions._theme, 0, true);
|
||||
deployMode.DeployApp();
|
||||
|
|
|
|||
|
|
@ -6,6 +6,9 @@ import {
|
|||
appSettings,
|
||||
locators,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("Test Top + Stacked navigation style", function () {
|
||||
before(() => {
|
||||
|
|
@ -124,7 +127,7 @@ describe("Test Top + Stacked navigation style", function () {
|
|||
);
|
||||
// Changing color style to theme should change navigation's background color
|
||||
deployMode.NavigateBacktoEditor();
|
||||
agHelper.GetNClick(appSettings.locators._appSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
agHelper.GetNClick(appSettings.locators._navigationSettingsTab);
|
||||
agHelper.GetNClick(appSettings.locators._colorStyleOptions._theme, 0, true);
|
||||
deployMode.DeployApp();
|
||||
|
|
|
|||
|
|
@ -80,4 +80,29 @@ describe("Autocomplete tests for setters", () => {
|
|||
propPane.EnterJSContext("onClick", "{{Input1.set", true, false);
|
||||
agHelper.GetElementsNAssertTextPresence(locators._hints, "setDisabled");
|
||||
});
|
||||
|
||||
it("3. function arguments hint shows up", () => {
|
||||
entityExplorer.SelectEntityByName("Button1");
|
||||
propPane.EnterJSContext("onClick", "{{", true, false);
|
||||
agHelper.GetNClickByContains(locators._hints, "appsmith", 0, false);
|
||||
agHelper.AssertElementVisibility(locators._evalValuePopover);
|
||||
propPane.EnterJSContext("onClick", "{{showAlert", true, false);
|
||||
agHelper.GetElementsNAssertTextPresence(locators._hints, "showAlert");
|
||||
agHelper.AssertElementAbsence(locators._evalValuePopover);
|
||||
agHelper.GetNClickByContains(locators._hints, "showAlert", 0, false);
|
||||
agHelper.GetNAssertElementText(
|
||||
locators._argHintFnName,
|
||||
"showAlert",
|
||||
"contain.text",
|
||||
);
|
||||
agHelper.AssertElementAbsence(locators._evalValuePopover);
|
||||
});
|
||||
|
||||
it("4. function description tooltip shows up", () => {
|
||||
entityExplorer.DragDropWidgetNVerify(draggableWidgets.BUTTON, 100, 100);
|
||||
entityExplorer.SelectEntityByName("Button1");
|
||||
propPane.EnterJSContext("onClick", "{{showAlert", true, false);
|
||||
agHelper.GetElementsNAssertTextPresence(locators._hints, "showAlert");
|
||||
agHelper.AssertElementExist(locators._tern_doc);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@ import {
|
|||
installer,
|
||||
draggableWidgets,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("Autocomplete bug fixes", function () {
|
||||
it("1. Bug #12790 Verifies if selectedRow is in best match", function () {
|
||||
|
|
@ -90,10 +93,11 @@ describe("Autocomplete bug fixes", function () {
|
|||
"excludeForAirgap",
|
||||
"7. Installed library should show up in autocomplete",
|
||||
function () {
|
||||
entityExplorer.ExpandCollapseEntity("Libraries");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
installer.OpenInstaller();
|
||||
installer.InstallLibrary("uuidjs", "UUID");
|
||||
installer.CloseInstaller();
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
entityExplorer.SelectEntityByName("Text1");
|
||||
propPane.TypeTextIntoField("Text", "{{UUI");
|
||||
agHelper.GetNAssertElementText(locators._hints, "UUID");
|
||||
|
|
@ -105,7 +109,9 @@ describe("Autocomplete bug fixes", function () {
|
|||
"8. No autocomplete for Removed libraries",
|
||||
function () {
|
||||
entityExplorer.RenameEntityFromExplorer("Text1Copy", "UUIDTEXT");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
installer.uninstallLibrary("uuidjs");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
propPane.TypeTextIntoField("Text", "{{UUID.");
|
||||
agHelper.AssertElementAbsence(locators._hints);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -38,28 +38,7 @@ describe("Dynamic input autocomplete", () => {
|
|||
cy.testJsontext("label", "", {
|
||||
parseSpecialCharSequences: true,
|
||||
});
|
||||
// Tests if "No suggestions" message will pop if you type any garbage
|
||||
cy.get(dynamicInputLocators.input)
|
||||
.first()
|
||||
.click({ force: true })
|
||||
.type("{uparrow}", { parseSpecialCharSequences: true })
|
||||
.type("{ctrl}{shift}{downarrow}", { parseSpecialCharSequences: true })
|
||||
.type("{backspace}", { parseSpecialCharSequences: true })
|
||||
|
||||
.then(() => {
|
||||
cy.get(dynamicInputLocators.input)
|
||||
.first()
|
||||
.click({ force: true })
|
||||
.type("{{garbage", {
|
||||
parseSpecialCharSequences: true,
|
||||
});
|
||||
cy.get(".CodeMirror-Tern-tooltip").should(
|
||||
"have.text",
|
||||
"No suggestions",
|
||||
);
|
||||
});
|
||||
});
|
||||
cy.evaluateErrorMessage("garbage is not defined");
|
||||
});
|
||||
|
||||
it("2. Test if action inside non event field throws error & open current value popup", () => {
|
||||
|
|
|
|||
|
|
@ -32,7 +32,5 @@ describe("Binding the button Widgets and validating NavigateTo Page functionalit
|
|||
locators._widgetInDeployed(draggableWidgets.BUTTON),
|
||||
);
|
||||
cy.url().should("contain", testdata.externalPage);
|
||||
|
||||
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -17,6 +17,9 @@ import {
|
|||
ERROR_ACTION_EXECUTE_FAIL,
|
||||
createMessage,
|
||||
} from "../../../../support/Objects/CommonErrorMessages";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("API Bugs", function () {
|
||||
before(() => {
|
||||
|
|
@ -60,6 +63,7 @@ describe("API Bugs", function () {
|
|||
action: "Delete",
|
||||
entityType: entityItems.Api,
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("3. Bug 18876 Ensures application does not crash when saving datasource", () => {
|
||||
|
|
@ -71,7 +75,7 @@ describe("API Bugs", function () {
|
|||
);
|
||||
apiPage.SelectPaneTab("Authentication");
|
||||
cy.get(apiPage._saveAsDS).last().click({ force: true });
|
||||
cy.get(".t--close-editor").click({ force: true });
|
||||
cy.go("back");
|
||||
cy.get(dataSources._datasourceModalSave).click();
|
||||
// ensures app does not crash and datasource is saved.
|
||||
cy.contains("Edit datasource to access authentication settings").should(
|
||||
|
|
|
|||
|
|
@ -52,6 +52,6 @@ describe("Verify setting tab form controls not to have tooltip and tooltip (unde
|
|||
action: "Delete",
|
||||
entityType: entityItems.Query,
|
||||
});
|
||||
dataSources.DeleteDatasouceFromActiveTab(datasourceName, 200);
|
||||
dataSources.DeleteDatasourceFromWithinDS(datasourceName, 200);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const dataSources = ObjectsRegistry.DataSources,
|
||||
agHelper = ObjectsRegistry.AggregateHelper;
|
||||
|
|
@ -10,7 +13,7 @@ describe(
|
|||
it("1. Create gsheet datasource, click on back button, discard popup should contain save and authorize", function () {
|
||||
dataSources.NavigateToDSCreateNew();
|
||||
dataSources.CreatePlugIn("Google Sheets");
|
||||
agHelper.GoBack();
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
agHelper.AssertContains(
|
||||
"Save & Authorize",
|
||||
"exist",
|
||||
|
|
@ -22,7 +25,7 @@ describe(
|
|||
dataSources.CreatePlugIn("PostgreSQL");
|
||||
// Need to add values since without that, going back won't show any popup
|
||||
dataSources.FillPostgresDSForm();
|
||||
agHelper.GoBack();
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
agHelper.AssertContains(
|
||||
"Save",
|
||||
"exist",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const dataSources = ObjectsRegistry.DataSources,
|
||||
agHelper = ObjectsRegistry.AggregateHelper,
|
||||
|
|
@ -11,14 +14,16 @@ describe("Bug 21734: On exiting from the Datasources page without saving changes
|
|||
// Have to fill form since modal won't show for empty ds
|
||||
dataSources.FillMongoDSForm();
|
||||
|
||||
ee.AddNewPage();
|
||||
agHelper.GetNClick(dataSources._addNewDataSource, 0, true);
|
||||
|
||||
agHelper.AssertContains(
|
||||
"Don't save",
|
||||
"exist",
|
||||
dataSources._datasourceModalDoNotSave,
|
||||
);
|
||||
cy.get(dataSources._datasourceModalDoNotSave).click();
|
||||
cy.get(dataSources._datasourceModalDoNotSave).click({ force: true });
|
||||
|
||||
ee.AddNewPage();
|
||||
|
||||
ee.SelectEntityByName("Page1");
|
||||
agHelper.AssertURL("page1");
|
||||
|
|
@ -32,13 +37,14 @@ describe("Bug 21734: On exiting from the Datasources page without saving changes
|
|||
// Have to fill form since modal won't show for empty ds
|
||||
dataSources.FillPostgresDSForm();
|
||||
|
||||
ee.SelectEntityByName("Page1");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
agHelper.AssertContains(
|
||||
"Don't save",
|
||||
"exist",
|
||||
dataSources._datasourceModalDoNotSave,
|
||||
);
|
||||
cy.get(dataSources._datasourceModalDoNotSave).click();
|
||||
ee.SelectEntityByName("Page1");
|
||||
agHelper.AssertURL("page1");
|
||||
|
||||
ee.SelectEntityByName("Page2");
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import {
|
||||
agHelper,
|
||||
dataSources,
|
||||
entityExplorer,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
|
|
@ -23,29 +22,13 @@ describe(
|
|||
cy.get("@dsName").then(($dsName) => {
|
||||
dsName = $dsName;
|
||||
// Select Users
|
||||
entityExplorer.SelectEntityByName(userMock, "Datasources");
|
||||
agHelper.Sleep(200);
|
||||
agHelper.AssertClassExists(
|
||||
dataSources._entityExplorerID(userMock),
|
||||
"active",
|
||||
);
|
||||
dataSources.navigateToDatasource(userMock);
|
||||
|
||||
// Switch to Movies
|
||||
entityExplorer.SelectEntityByName(movieMock, "Datasources");
|
||||
agHelper.Sleep(200);
|
||||
agHelper.AssertClassExists(
|
||||
dataSources._entityExplorerID(movieMock),
|
||||
"active",
|
||||
);
|
||||
dataSources.navigateToDatasource(movieMock);
|
||||
|
||||
// Switch to custom DS
|
||||
entityExplorer.SelectEntityByName(dsName, "Datasources");
|
||||
entityExplorer.ExpandCollapseEntity(dsName, false);
|
||||
agHelper.Sleep(200);
|
||||
agHelper.AssertClassExists(
|
||||
dataSources._entityExplorerID(dsName),
|
||||
"active",
|
||||
);
|
||||
dataSources.navigateToDatasource(dsName);
|
||||
|
||||
// Delete all datasources
|
||||
entityExplorer.ActionContextMenuByEntityName({
|
||||
|
|
@ -61,9 +44,9 @@ describe(
|
|||
action: "Delete",
|
||||
});
|
||||
|
||||
dataSources.DeleteDatasouceFromActiveTab(userMock);
|
||||
dataSources.DeleteDatasouceFromActiveTab(movieMock);
|
||||
dataSources.DeleteDatasouceFromActiveTab(dsName);
|
||||
dataSources.DeleteDatasourceFromWithinDS(userMock);
|
||||
dataSources.DeleteDatasourceFromWithinDS(movieMock);
|
||||
dataSources.DeleteDatasourceFromWithinDS(dsName);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
import OneClickBindingLocator from "../../../../locators/OneClickBindingLocator";
|
||||
import {
|
||||
agHelper,
|
||||
entityExplorer,
|
||||
apiPage,
|
||||
dataManager,
|
||||
draggableWidgets,
|
||||
propPane,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
|
||||
describe("transformed one-click binding", function () {
|
||||
before(() => {
|
||||
entityExplorer.NavigateToSwitcher("Explorer");
|
||||
});
|
||||
|
||||
it("Transforms API data to match widget exppected type ", function () {
|
||||
// Create anAPI that mreturns object response
|
||||
apiPage.CreateAndFillApi(
|
||||
dataManager.dsValues[dataManager.defaultEnviorment].mockApiObjectUrl,
|
||||
);
|
||||
apiPage.RunAPI();
|
||||
|
||||
// Table
|
||||
entityExplorer.DragDropWidgetNVerify(draggableWidgets.TABLE, 300, 300);
|
||||
|
||||
agHelper.GetNClick(OneClickBindingLocator.datasourceDropdownSelector);
|
||||
agHelper.GetNClick(OneClickBindingLocator.datasourceQuerySelector("Api1"));
|
||||
propPane.ToggleJSMode("Table Data", true);
|
||||
agHelper.AssertContains("{{Api1.data.users}}");
|
||||
|
||||
// Select widget
|
||||
entityExplorer.DragDropWidgetNVerify(draggableWidgets.SELECT, 100, 100);
|
||||
|
||||
agHelper.GetNClick(OneClickBindingLocator.datasourceDropdownSelector);
|
||||
agHelper.GetNClick(OneClickBindingLocator.datasourceQuerySelector("Api1"));
|
||||
propPane.ToggleJSMode("Source Data", true);
|
||||
agHelper.AssertContains(
|
||||
"{{Api1.data.users.map( (obj) =>{ return {'label': obj.address, 'value': obj.avatar } })}}",
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
import { agHelper, dataSources } from "../../../../support/Objects/ObjectsCore";
|
||||
import { featureFlagIntercept } from "../../../../support/Objects/FeatureFlags";
|
||||
|
||||
describe("Datasource structure schema preview data", () => {
|
||||
before(() => {
|
||||
featureFlagIntercept({ ab_gsheet_schema_enabled: true });
|
||||
dataSources.CreateMockDB("Users");
|
||||
});
|
||||
|
||||
it(
|
||||
"excludeForAirgap",
|
||||
"1. Verify if the schema table accordions is collapsed in case of search",
|
||||
() => {
|
||||
agHelper.TypeText(
|
||||
dataSources._datasourceStructureSearchInput,
|
||||
"public.us",
|
||||
);
|
||||
agHelper.Sleep(1000);
|
||||
agHelper.AssertElementAbsence(
|
||||
`${dataSources._dsStructurePreviewMode} ${dataSources._datasourceSchemaColumn}`,
|
||||
);
|
||||
},
|
||||
);
|
||||
});
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
import {
|
||||
agHelper,
|
||||
locators,
|
||||
entityExplorer,
|
||||
jsEditor,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
|
||||
describe("JS Function Execution", function () {
|
||||
before(() => {
|
||||
entityExplorer.NavigateToSwitcher("Explorer");
|
||||
});
|
||||
|
||||
it("Retains lint errors after navigation", function () {
|
||||
// JS Object 1
|
||||
jsEditor.CreateJSObject(
|
||||
`export default {
|
||||
myVar1: [],
|
||||
myVar2: {},
|
||||
myFun1 () {
|
||||
// write code here
|
||||
// this.myVar1 = [1,2,3]
|
||||
},
|
||||
async myFun2 () {
|
||||
// use async-await or promises
|
||||
// Lint Error
|
||||
fff
|
||||
}
|
||||
}`,
|
||||
{
|
||||
paste: true,
|
||||
completeReplace: true,
|
||||
toRun: false,
|
||||
shouldCreateNewJSObj: true,
|
||||
prettify: false,
|
||||
},
|
||||
);
|
||||
// JS Object 2
|
||||
jsEditor.CreateJSObject(
|
||||
`export default {
|
||||
myVar1: [],
|
||||
myVar2: {},
|
||||
myFun1 () {
|
||||
// write code here
|
||||
// this.myVar1 = [1,2,3]
|
||||
},
|
||||
async myFun2 () {
|
||||
// use async-await or promises
|
||||
}
|
||||
}`,
|
||||
{
|
||||
paste: true,
|
||||
completeReplace: true,
|
||||
toRun: false,
|
||||
shouldCreateNewJSObj: true,
|
||||
prettify: false,
|
||||
},
|
||||
);
|
||||
|
||||
entityExplorer.SelectEntityByName("JSObject1", "Queries/JS");
|
||||
// Assert lint error
|
||||
agHelper.AssertElementLength(locators._lintErrorElement, 1);
|
||||
agHelper.HoverElement(locators._lintErrorElement);
|
||||
agHelper.AssertContains(`'fff' is not defined`);
|
||||
|
||||
entityExplorer.SelectEntityByName("JSObject2", "Queries/JS");
|
||||
agHelper.AssertElementAbsence(locators._lintErrorElement);
|
||||
|
||||
entityExplorer.SelectEntityByName("JSObject1", "Queries/JS");
|
||||
// Assert lint error
|
||||
agHelper.AssertElementLength(locators._lintErrorElement, 1);
|
||||
agHelper.HoverElement(locators._lintErrorElement);
|
||||
agHelper.AssertContains(`'fff' is not defined`);
|
||||
});
|
||||
});
|
||||
|
|
@ -7,6 +7,9 @@ import {
|
|||
appSettings,
|
||||
entityExplorer,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
let dsName: any;
|
||||
|
||||
|
|
@ -17,6 +20,7 @@ describe("Bug 9334: The Select widget value is sent as null when user switches b
|
|||
cy.get("@dsName").then(($dsName) => {
|
||||
dsName = $dsName;
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("1. Create dummy pages for navigating", () => {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
import * as _ from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
let dsName: any;
|
||||
|
||||
|
|
@ -18,9 +21,9 @@ describe("datasource unsaved changes popup shows even without changes", function
|
|||
_.dataSources.SaveDatasource();
|
||||
_.agHelper.Sleep();
|
||||
_.dataSources.EditDatasource();
|
||||
_.agHelper.GoBack();
|
||||
_.dataSources.cancelDSEditAndAssertModalPopUp(false);
|
||||
_.agHelper.AssertElementVisibility(_.dataSources._activeDS);
|
||||
_.dataSources.DeleteDatasouceFromActiveTab(dsName);
|
||||
_.dataSources.DeleteDatasourceFromWithinDS(dsName);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -42,9 +45,9 @@ describe("datasource unsaved changes popup shows even without changes", function
|
|||
// Even if headers, and query parameters are being initialized, we shouldnt see the popup
|
||||
// as those are not initialized by user
|
||||
_.dataSources.EditDatasource();
|
||||
_.agHelper.GoBack();
|
||||
_.dataSources.cancelDSEditAndAssertModalPopUp(false);
|
||||
_.agHelper.AssertElementVisibility(_.dataSources._activeDS);
|
||||
_.dataSources.DeleteDatasouceFromActiveTab(dsName);
|
||||
_.dataSources.DeleteDatasourceFromWithinDS(dsName);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -68,7 +71,7 @@ describe("datasource unsaved changes popup shows even without changes", function
|
|||
// Assert that popup is visible
|
||||
_.dataSources.SaveDSFromDialog(false);
|
||||
|
||||
_.dataSources.DeleteDatasouceFromActiveTab(dsName);
|
||||
_.dataSources.DeleteDatasourceFromWithinDS(dsName);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -92,7 +95,7 @@ describe("datasource unsaved changes popup shows even without changes", function
|
|||
// Assert that popup is visible
|
||||
_.dataSources.cancelDSEditAndAssertModalPopUp(true, false);
|
||||
|
||||
_.dataSources.DeleteDatasouceFromActiveTab(dsName);
|
||||
_.dataSources.DeleteDatasourceFromWithinDS(dsName);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -115,7 +118,7 @@ describe("datasource unsaved changes popup shows even without changes", function
|
|||
// Assert that popup is visible
|
||||
_.dataSources.cancelDSEditAndAssertModalPopUp(false, false);
|
||||
|
||||
_.dataSources.DeleteDatasouceFromActiveTab(dsName);
|
||||
_.dataSources.DeleteDatasourceFromWithinDS(dsName);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -148,8 +151,14 @@ describe("datasource unsaved changes popup shows even without changes", function
|
|||
_.dataSources._host(),
|
||||
_.dataManager.dsValues.Staging.mongo_host,
|
||||
);
|
||||
_.agHelper.GetNClick(
|
||||
_.dataSources._cancelEditDatasourceButton,
|
||||
0,
|
||||
true,
|
||||
200,
|
||||
);
|
||||
|
||||
_.dataSources.DeleteDatasouceFromActiveTab(dsName);
|
||||
_.dataSources.DeleteDatasourceFromWithinDS(dsName);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -5,11 +5,19 @@ import {
|
|||
entityExplorer,
|
||||
homePage,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
import { featureFlagIntercept } from "../../../../support/Objects/FeatureFlags";
|
||||
|
||||
let guid;
|
||||
let dataSourceName: string;
|
||||
describe("Datasource form related tests", function () {
|
||||
before(() => {
|
||||
featureFlagIntercept({
|
||||
ab_gsheet_schema_enabled: true,
|
||||
ab_mock_mongo_schema_enabled: true,
|
||||
});
|
||||
homePage.CreateNewWorkspace("FetchSchemaOnce", true);
|
||||
homePage.CreateAppInWorkspace("FetchSchemaOnce");
|
||||
});
|
||||
|
|
@ -19,7 +27,6 @@ describe("Datasource form related tests", function () {
|
|||
cy.get("@guid").then((uid) => {
|
||||
guid = uid;
|
||||
dataSourceName = "Postgres " + guid;
|
||||
entityExplorer.ExpandCollapseEntity("Datasources");
|
||||
dataSources.NavigateToDSCreateNew();
|
||||
dataSources.CreatePlugIn("PostgreSQL");
|
||||
agHelper.RenameWithInPane(dataSourceName, false);
|
||||
|
|
@ -42,12 +49,11 @@ describe("Datasource form related tests", function () {
|
|||
|
||||
it("2. Verify if schema was fetched once #18448", () => {
|
||||
agHelper.RefreshPage();
|
||||
entityExplorer.ExpandCollapseEntity("Datasources");
|
||||
entityExplorer.ExpandCollapseEntity(dataSourceName, false);
|
||||
entityExplorer.ExpandCollapseEntity("Datasources");
|
||||
entityExplorer.ExpandCollapseEntity(dataSourceName);
|
||||
dataSources.navigateToDatasource(dataSourceName);
|
||||
agHelper.Sleep(1500);
|
||||
agHelper.VerifyCallCount(`@getDatasourceStructure`, 1);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
entityExplorer.SelectEntityByName("Query1");
|
||||
agHelper.ActionContextMenuWithInPane({
|
||||
action: "Delete",
|
||||
entityType: entityItems.Query,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
import * as _ from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
let repoName: any;
|
||||
let tempBranch: any;
|
||||
|
|
@ -81,12 +84,11 @@ describe("Git Bugs", function () {
|
|||
_.gitSync.CreateGitBranch(`st`, true);
|
||||
cy.get("@gitbranchName").then((branchName) => {
|
||||
statusBranch = branchName;
|
||||
_.agHelper.GetNClick(_.locators._appEditMenuBtn);
|
||||
// cy.wait(_.locators._appEditMenu);
|
||||
_.agHelper.GetNClick(_.locators._appEditMenuSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
_.agHelper.GetNClick(_.locators._appThemeSettings);
|
||||
_.agHelper.GetNClick(_.locators._appChangeThemeBtn, 0, true);
|
||||
_.agHelper.GetNClick(_.locators._appThemeCard, 2);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
_.agHelper.GetNClick(_.locators._publishButton);
|
||||
_.agHelper.WaitUntilEleAppear(_.gitSync._gitStatusChanges);
|
||||
_.agHelper.AssertContains(
|
||||
|
|
@ -95,11 +97,10 @@ describe("Git Bugs", function () {
|
|||
_.gitSync._gitStatusChanges,
|
||||
);
|
||||
_.agHelper.GetNClick(_.locators._dialogCloseButton);
|
||||
_.agHelper.GetNClick(_.locators._appEditMenuBtn);
|
||||
// cy.wait(_.locators._appEditMenu);
|
||||
_.agHelper.GetNClick(_.locators._appEditMenuSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
_.agHelper.GetNClick(_.locators._appNavigationSettings);
|
||||
_.agHelper.GetNClick(_.locators._appNavigationSettingsShowTitle);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
_.agHelper.GetNClick(_.locators._publishButton);
|
||||
_.agHelper.WaitUntilEleAppear(_.gitSync._gitStatusChanges);
|
||||
_.agHelper.AssertContains(
|
||||
|
|
@ -116,10 +117,10 @@ describe("Git Bugs", function () {
|
|||
_.gitSync.CreateGitBranch(`b24946`, true);
|
||||
cy.get("@gitbranchName").then((branchName) => {
|
||||
statusBranch = branchName;
|
||||
_.agHelper.GetNClick(_.locators._appEditMenuBtn);
|
||||
_.agHelper.GetNClick(_.locators._appEditMenuSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
_.agHelper.GetNClick(_.locators._appNavigationSettings);
|
||||
_.agHelper.GetNClick(_.locators._appNavigationSettingsShowTitle);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
_.agHelper.GetNClick(_.locators._publishButton);
|
||||
_.agHelper.WaitUntilEleAppear(_.gitSync._gitStatusChanges);
|
||||
_.agHelper.GetNClick(_.gitSync._discardChanges);
|
||||
|
|
@ -146,7 +147,7 @@ describe("Git Bugs", function () {
|
|||
it("7. Bug 24920: Not able to discard app settings changes for the first time in git connected app ", function () {
|
||||
_.gitSync.SwitchGitBranch("master", false, true);
|
||||
// add navigation settings changes
|
||||
_.agHelper.GetNClick(_.appSettings.locators._appSettings);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Settings);
|
||||
_.agHelper.GetNClick(_.appSettings.locators._navigationSettingsTab);
|
||||
_.agHelper.GetNClick(
|
||||
_.appSettings.locators._navigationSettings._orientationOptions._side,
|
||||
|
|
|
|||
|
|
@ -121,7 +121,6 @@ describe("Bug #14299 - The data from the query does not show up on the widget",
|
|||
agHelper.WaitUntilAllToastsDisappear();
|
||||
deployMode.DeployApp(locators._widgetInDeployed("tablewidget"), false);
|
||||
deployMode.NavigateBacktoEditor();
|
||||
entityExplorer.ExpandCollapseEntity("Datasources");
|
||||
dataSources.DeleteDatasourceFromWithinDS(dsName, 200);
|
||||
},
|
||||
);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@ import {
|
|||
entityItems,
|
||||
debuggerHelper,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("excludeForAirgap", "Query pane navigation", () => {
|
||||
let ds1Name: string;
|
||||
|
|
@ -27,6 +30,7 @@ describe("excludeForAirgap", "Query pane navigation", () => {
|
|||
cy.get("@dsName").then(($dsName) => {
|
||||
ds2Name = $dsName as unknown as string;
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("1. Switching between S3 query and firestore query from the debugger", () => {
|
||||
|
|
@ -46,6 +50,7 @@ describe("excludeForAirgap", "Query pane navigation", () => {
|
|||
cy.get("@dsName").then(($dsName) => {
|
||||
ds2Name = $dsName as unknown as string;
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
entityExplorer.CreateNewDsQuery(ds2Name);
|
||||
agHelper.UpdateCodeInput(
|
||||
".t--actionConfiguration\\.formData\\.limitDocuments\\.data",
|
||||
|
|
@ -77,7 +82,7 @@ describe("excludeForAirgap", "Query pane navigation", () => {
|
|||
entityType: entityItems.Query,
|
||||
});
|
||||
|
||||
dataSources.DeleteDSFromEntityExplorer(ds1Name);
|
||||
dataSources.DeleteDSFromEntityExplorer(ds2Name);
|
||||
dataSources.DeleteDatasourceFromWithinDS(ds1Name);
|
||||
dataSources.DeleteDatasourceFromWithinDS(ds2Name);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -24,18 +24,9 @@ describe("Entity explorer API pane related testcases", function () {
|
|||
locator._visibleTextSpan("No query/JS to display"),
|
||||
);
|
||||
agHelper.AssertElementVisibility(locator._visibleTextSpan("New query/JS"));
|
||||
|
||||
ee.ExpandCollapseEntity("Datasources");
|
||||
agHelper.AssertElementVisibility(
|
||||
locator._visibleTextSpan("No datasource to display"),
|
||||
);
|
||||
agHelper.AssertElementVisibility(
|
||||
locator._visibleTextSpan("New datasource"),
|
||||
);
|
||||
});
|
||||
|
||||
it("2. Move to page / edit API name /properties validation", function () {
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.CreateAPI("FirstAPI");
|
||||
cy.enterDatasourceAndPath(testdata.baseUrl, testdata.methods);
|
||||
cy.SaveAndRunAPI();
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ describe("Entity explorer tests related to copy query", function () {
|
|||
|
||||
cy.get("@saveDatasource").then((httpResponse) => {
|
||||
datasourceName = httpResponse.response.body.data.name;
|
||||
cy.CheckAndUnfoldEntityItem("Datasources");
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
});
|
||||
|
||||
|
|
@ -83,37 +82,4 @@ describe("Entity explorer tests related to copy query", function () {
|
|||
expect($lis.eq(4)).to.contain("{{Query1.clear()}}");
|
||||
});
|
||||
});
|
||||
|
||||
it("3. Rename datasource in explorer, Delete query and try to Delete datasource", function () {
|
||||
entityExplorer.SelectEntityByName("Page1");
|
||||
cy.generateUUID().then((uid) => {
|
||||
updatedName = uid;
|
||||
cy.log("complete uid :" + updatedName);
|
||||
updatedName = uid.replace(/-/g, "_").slice(1, 15);
|
||||
cy.log("sliced id :" + updatedName);
|
||||
entityExplorer.ExpandCollapseEntity("Queries/JS");
|
||||
entityExplorer.ExpandCollapseEntity("Datasources");
|
||||
entityExplorer.RenameEntityFromExplorer(datasourceName, updatedName);
|
||||
//cy.EditEntityNameByDoubleClick(datasourceName, updatedName);
|
||||
cy.wait(1000);
|
||||
entityExplorer.ActionContextMenuByEntityName({
|
||||
entityNameinLeftSidebar: updatedName,
|
||||
action: "Delete",
|
||||
toAssertAction: false,
|
||||
});
|
||||
cy.wait(1000);
|
||||
//This is check to make sure if a datasource is active 409
|
||||
cy.wait("@deleteDatasource").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
409,
|
||||
);
|
||||
});
|
||||
entityExplorer.SelectEntityByName("Query1", "Queries/JS");
|
||||
entityExplorer.ActionContextMenuByEntityName({
|
||||
entityNameinLeftSidebar: "Query1",
|
||||
action: "Delete",
|
||||
entityType: entityItems.Query,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,125 +0,0 @@
|
|||
const explorer = require("../../../../locators/explorerlocators.json");
|
||||
const queryLocators = require("../../../../locators/QueryEditor.json");
|
||||
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
|
||||
import {
|
||||
entityExplorer,
|
||||
dataSources,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
|
||||
describe("Entity explorer datasource structure", function () {
|
||||
let datasourceName;
|
||||
|
||||
beforeEach(() => {
|
||||
//cy.ClearSearch();
|
||||
cy.startRoutesForDatasource();
|
||||
cy.createPostgresDatasource();
|
||||
cy.get("@saveDatasource").then((httpResponse) => {
|
||||
datasourceName = httpResponse.response.body.data.name;
|
||||
});
|
||||
});
|
||||
|
||||
it("1. Entity explorer datasource structure", function () {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.wait("@createNewApi").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
201,
|
||||
);
|
||||
|
||||
cy.get(apiwidget.apiTxt)
|
||||
.clear()
|
||||
.type("MyQuery", { force: true })
|
||||
.should("have.value", "MyQuery")
|
||||
.blur();
|
||||
cy.WaitAutoSave();
|
||||
entityExplorer.ExpandCollapseEntity("Datasources");
|
||||
entityExplorer.ActionContextMenuByEntityName({
|
||||
entityNameinLeftSidebar: datasourceName,
|
||||
action: "Refresh",
|
||||
});
|
||||
cy.wait(2000); //for the tables to open
|
||||
cy.wait("@getDatasourceStructure").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
|
||||
// cy.get(explorer.datasourceStructure)
|
||||
// .first()
|
||||
// .find(explorer.collapse)
|
||||
// .click();
|
||||
// cy.get(explorer.datasourceColumn)
|
||||
// .first()
|
||||
// .click();
|
||||
// cy.get(".bp3-popover-content").should("be.visible");
|
||||
|
||||
cy.get(explorer.templateMenuIcon).first().click({ force: true });
|
||||
// assert suggested tag is present
|
||||
cy.get(".t--structure-template-menu-popover").last().contains("Suggested");
|
||||
cy.get(".t--structure-template-menu-popover")
|
||||
.last()
|
||||
.contains("Select")
|
||||
.click({ force: true });
|
||||
cy.wait("@createNewApi").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
201,
|
||||
);
|
||||
|
||||
cy.deleteQueryUsingContext();
|
||||
entityExplorer.ExpandCollapseEntity("Queries/JS");
|
||||
entityExplorer.ActionContextMenuByEntityName({
|
||||
entityNameinLeftSidebar: "MyQuery",
|
||||
});
|
||||
cy.deleteDatasource(datasourceName);
|
||||
});
|
||||
|
||||
it("2. Refresh datasource structure", function () {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
|
||||
//cy.GlobalSearchEntity(datasourceName);
|
||||
// cy.get(`.t--entity.datasource:contains(${datasourceName})`)
|
||||
// .find(explorer.collapse)
|
||||
// .as("datasourceEntityCollapse");
|
||||
// cy.wait("@getDatasourceStructure").should(
|
||||
// "have.nested.property",
|
||||
// "response.body.responseMeta.status",
|
||||
// 200,
|
||||
// );
|
||||
//cy.get(commonlocators.entityExplorersearch).clear({ force: true });
|
||||
|
||||
const tableName = Math.random()
|
||||
.toString(36)
|
||||
.replace(/[^a-z]+/g, "");
|
||||
dataSources.EnterQuery(`CREATE TABLE public.${tableName} ( ID int );`);
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.request.requestParams.Query.value).to.contain(
|
||||
tableName,
|
||||
);
|
||||
});
|
||||
|
||||
//cy.wait(8000)
|
||||
// cy.GlobalSearchEntity(datasourceName);
|
||||
// cy.get("@datasourceEntityCollapse")
|
||||
// .first()
|
||||
// .click();
|
||||
// cy.xpath(explorer.datsourceEntityPopover)
|
||||
// .last()
|
||||
// .click({ force: true });
|
||||
dataSources.AssertTableInVirtuosoList(
|
||||
datasourceName,
|
||||
`public.${tableName}`,
|
||||
);
|
||||
|
||||
cy.typeValueNValidate(`DROP TABLE public.${tableName}`);
|
||||
cy.runQuery();
|
||||
dataSources.AssertTableInVirtuosoList(
|
||||
datasourceName,
|
||||
`public.${tableName}`,
|
||||
false,
|
||||
);
|
||||
cy.deleteQueryUsingContext();
|
||||
cy.deleteDatasource(datasourceName);
|
||||
});
|
||||
});
|
||||
|
|
@ -11,8 +11,6 @@ describe("Tab widget test", function () {
|
|||
|
||||
it("1. Rename API with table widget name validation test", function () {
|
||||
cy.log("Login Successful");
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.log("Navigation to API Panel screen successful");
|
||||
cy.CreateApiAndValidateUniqueEntityName(apiName);
|
||||
cy.get(apiwidget.apiTxt)
|
||||
.clear()
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ const tooltTipQuery = `.rc-tooltip.ads-v2-tooltip:not(.rc-tooltip-hidden) > .rc-
|
|||
describe("Entity Explorer showing tooltips on long names", function () {
|
||||
it("1. Expect tooltip on long names only", function () {
|
||||
// create an API with a short name
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.CreateAPI(shortName);
|
||||
ee.ExpandCollapseEntity("Queries/JS", true);
|
||||
// assert that a tooltip does not show up during hover
|
||||
|
|
@ -19,7 +18,6 @@ describe("Entity Explorer showing tooltips on long names", function () {
|
|||
cy.get("body").realHover({ position: "topLeft" });
|
||||
|
||||
// create another API with a long name
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.CreateAPI(longName);
|
||||
|
||||
// assert that a tooltip does show up during hover
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ describe("Pages", function () {
|
|||
let apiName = "someApi";
|
||||
|
||||
it("1. Clone page & check tooltip for long name", function () {
|
||||
//cy.NavigateToAPI_Panel();
|
||||
_.apiPage.CreateApi(apiName);
|
||||
_.entityExplorer.SelectEntityByName("Page1", "Pages");
|
||||
_.entityExplorer.ClonePage("Page1");
|
||||
|
|
|
|||
|
|
@ -1,147 +0,0 @@
|
|||
import {
|
||||
agHelper,
|
||||
entityExplorer,
|
||||
locators,
|
||||
draggableWidgets,
|
||||
installer,
|
||||
homePage,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
|
||||
const ExplorerMenu = {
|
||||
ADD_PAGE: "ADD_PAGE",
|
||||
ENTITY: "ENTITY",
|
||||
ADD_LIBRARY: "ADD_LIBRARY",
|
||||
ADD_QUERY_JS: "ADD_QUERY_JS",
|
||||
};
|
||||
|
||||
const OpenExplorerMenu = (menu) => {
|
||||
switch (menu) {
|
||||
case ExplorerMenu.ADD_PAGE:
|
||||
agHelper.GetNClick(locators._newPage);
|
||||
cy.get(locators._canvas).trigger("mousemove", 500, 400, {
|
||||
force: true,
|
||||
});
|
||||
break;
|
||||
case ExplorerMenu.ENTITY:
|
||||
cy.xpath(entityExplorer._contextMenu("Page1"))
|
||||
.last()
|
||||
.click({ force: true });
|
||||
cy.get(locators._canvas).trigger("mousemove", 500, 400, {
|
||||
force: true,
|
||||
});
|
||||
break;
|
||||
case ExplorerMenu.ADD_QUERY_JS:
|
||||
cy.get(locators._createNew).last().click({ force: true });
|
||||
cy.get(locators._canvas).trigger("mousemove", 500, 300, {
|
||||
force: true,
|
||||
});
|
||||
break;
|
||||
case ExplorerMenu.ADD_LIBRARY:
|
||||
installer.OpenInstaller(true);
|
||||
cy.get(locators._canvas).trigger("mousemove", 500, 100, {
|
||||
force: true,
|
||||
});
|
||||
break;
|
||||
default:
|
||||
}
|
||||
};
|
||||
|
||||
describe("Entity explorer tests related to pinning and unpinning", function () {
|
||||
before(() => {
|
||||
agHelper.AddDsl("displayWidgetDsl");
|
||||
});
|
||||
|
||||
it("1. checks entity explorer visibility on unpin", function () {
|
||||
cy.wait(5000);
|
||||
cy.get(".t--entity-explorer").should("be.visible");
|
||||
cy.get(".t--pin-entity-explorer").click();
|
||||
cy.wait(5000);
|
||||
cy.get("[data-testid=widgets-editor]").click({ force: true });
|
||||
cy.wait(3000);
|
||||
cy.get(".t--entity-explorer").should("not.be.visible");
|
||||
//checks entity explorer visibility on pin
|
||||
cy.get(".t--pin-entity-explorer").click();
|
||||
cy.get(".t--entity-explorer").should("be.visible");
|
||||
});
|
||||
|
||||
it("2. Widgets visibility in widget pane", function () {
|
||||
entityExplorer.NavigateToSwitcher("Widgets");
|
||||
agHelper.ScrollTo(locators._widgetPane, "bottom");
|
||||
agHelper.AssertElementVisibility(
|
||||
locators._widgetPageIcon(draggableWidgets.VIDEO),
|
||||
);
|
||||
entityExplorer.PinUnpinEntityExplorer(true);
|
||||
agHelper.AssertElementVisibility(
|
||||
locators._widgetPageIcon(draggableWidgets.VIDEO),
|
||||
);
|
||||
entityExplorer.PinUnpinEntityExplorer(false);
|
||||
entityExplorer.NavigateToSwitcher("Explorer");
|
||||
});
|
||||
|
||||
it(
|
||||
"excludeForAirgap",
|
||||
"3. Unpinned explorer is to be open when any context menu is open or when an entity name is being edited",
|
||||
function () {
|
||||
agHelper.AssertElementVisibility(entityExplorer._entityExplorer);
|
||||
entityExplorer.PinUnpinEntityExplorer(true);
|
||||
const menu = Object.keys(ExplorerMenu);
|
||||
|
||||
Cypress._.times(menu.length, (index) => {
|
||||
OpenExplorerMenu(menu[index]);
|
||||
agHelper.Sleep();
|
||||
cy.get("[data-testid=sidebar-active]").should("exist");
|
||||
});
|
||||
|
||||
// when an entity is being edited
|
||||
entityExplorer.ActionContextMenuByEntityName({
|
||||
entityNameinLeftSidebar: "Page1",
|
||||
action: "Edit name",
|
||||
});
|
||||
cy.get(locators._canvas).trigger("mousemove", 500, 400);
|
||||
agHelper.AssertElementVisibility(entityExplorer._entityExplorer);
|
||||
entityExplorer.PinUnpinEntityExplorer(false);
|
||||
},
|
||||
);
|
||||
|
||||
it(
|
||||
"airgap",
|
||||
"4. Unpinned explorer is to be open when any context menu is open or when an entity name is being edited",
|
||||
function () {
|
||||
agHelper.AssertElementVisibility(entityExplorer._entityExplorer);
|
||||
entityExplorer.PinUnpinEntityExplorer(true);
|
||||
// We cannot add libraries on airgap
|
||||
const menu = Object.keys(ExplorerMenu).filter(
|
||||
(menu) => menu !== ExplorerMenu.ADD_LIBRARY,
|
||||
);
|
||||
|
||||
Cypress._.times(menu.length, (index) => {
|
||||
OpenExplorerMenu(menu[index]);
|
||||
agHelper.Sleep();
|
||||
cy.get("[data-testid=sidebar-active]").should("exist");
|
||||
});
|
||||
|
||||
// when an entity is being edited
|
||||
entityExplorer.ActionContextMenuByEntityName({
|
||||
entityNameinLeftSidebar: "Page1",
|
||||
action: "Edit name",
|
||||
});
|
||||
cy.get(locators._canvas).trigger("mousemove", 500, 400);
|
||||
agHelper.AssertElementVisibility(entityExplorer._entityExplorer);
|
||||
entityExplorer.PinUnpinEntityExplorer(false);
|
||||
},
|
||||
);
|
||||
|
||||
it("5. Explorer should be visible by default on a new application", function () {
|
||||
agHelper.AssertElementVisibility(entityExplorer._entityExplorer);
|
||||
entityExplorer.PinUnpinEntityExplorer(true);
|
||||
agHelper.GetElement(locators._canvas).trigger("mousemove", 500, 100, {
|
||||
force: true,
|
||||
});
|
||||
agHelper
|
||||
.GetElement(entityExplorer._entityExplorer)
|
||||
.should("not.be.visible");
|
||||
homePage.NavigateToHome();
|
||||
homePage.CreateNewApplication();
|
||||
agHelper.AssertElementVisibility(entityExplorer._entityExplorer);
|
||||
});
|
||||
});
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
/// <reference types="Cypress" />
|
||||
|
||||
const datasource = require("../../../../locators/DatasourcesEditor.json");
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
|
||||
|
|
@ -52,26 +54,14 @@ describe("Entity explorer tests related to query and datasource", function () {
|
|||
cy.testSaveDatasource();
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
|
||||
/* eslint-disable */
|
||||
cy.wait(2000);
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.CheckAndUnfoldEntityItem("Datasources");
|
||||
cy.contains(".t--entity-name", datasourceName).click();
|
||||
|
||||
cy.get(".t--edit-datasource-name").click();
|
||||
cy.get(".t--edit-datasource-name input")
|
||||
.clear()
|
||||
.type(`${datasourceName}new`, { force: true })
|
||||
.blur();
|
||||
|
||||
cy.contains(commonlocators.entityName, `${datasourceName}new`);
|
||||
dataSources.navigateToDatasource(datasourceName);
|
||||
agHelper.RenameWithInPane(`${datasourceName}new`, false);
|
||||
cy.contains(dataSources._datasourceCard, `${datasourceName}new`);
|
||||
|
||||
// reverting the name
|
||||
cy.get(".t--edit-datasource-name").click();
|
||||
cy.get(".t--edit-datasource-name input")
|
||||
.clear()
|
||||
.type(`${datasourceName}`, { force: true })
|
||||
.blur();
|
||||
agHelper.RenameWithInPane(datasourceName, false);
|
||||
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
|
||||
// going to the query create page
|
||||
cy.CheckAndUnfoldEntityItem("Queries/JS");
|
||||
|
|
@ -122,6 +112,6 @@ describe("Entity explorer tests related to query and datasource", function () {
|
|||
action: "Delete",
|
||||
entityType: entityItems.Query,
|
||||
});
|
||||
dataSources.DeleteDatasouceFromActiveTab(datasourceName);
|
||||
dataSources.DeleteDatasourceFromWithinDS(datasourceName);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ import {
|
|||
dataSources,
|
||||
draggableWidgets,
|
||||
entityExplorer,
|
||||
entityItems,
|
||||
locators,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
let mockDBNameUsers: string, mockDBNameMovies: string;
|
||||
|
|
@ -13,6 +12,12 @@ describe("Entity explorer context menu should hide on scrolling", function () {
|
|||
"excludeForAirgap",
|
||||
"1. Bug #15474 - Entity explorer menu must close on scroll",
|
||||
function () {
|
||||
entityExplorer.DragDropWidgetNVerify(draggableWidgets.MODAL);
|
||||
agHelper.GetNClick(locators._closeModal, 0, true, 0);
|
||||
entityExplorer.DragDropWidgetNVerify(draggableWidgets.MODAL);
|
||||
agHelper.GetNClick(locators._closeModal, 0, true, 0);
|
||||
entityExplorer.DragDropWidgetNVerify(draggableWidgets.MODAL);
|
||||
agHelper.GetNClick(locators._closeModal, 0, true, 0);
|
||||
entityExplorer.DragDropWidgetNVerify(draggableWidgets.MODAL);
|
||||
agHelper.GetNClick(locators._closeModal, 0, true, 0);
|
||||
entityExplorer.DragDropWidgetNVerify(draggableWidgets.MODAL);
|
||||
|
|
@ -22,27 +27,31 @@ describe("Entity explorer context menu should hide on scrolling", function () {
|
|||
entityExplorer.ExpandCollapseEntity("Modal1");
|
||||
entityExplorer.ExpandCollapseEntity("Modal2");
|
||||
entityExplorer.ExpandCollapseEntity("Modal3");
|
||||
entityExplorer.ExpandCollapseEntity("Modal4");
|
||||
entityExplorer.ExpandCollapseEntity("Modal5");
|
||||
entityExplorer.ExpandCollapseEntity("Modal6");
|
||||
|
||||
// Setup to make the explorer scrollable
|
||||
entityExplorer.ExpandCollapseEntity("Queries/JS");
|
||||
entityExplorer.ExpandCollapseEntity("Datasources");
|
||||
agHelper.ContainsNClick("Libraries");
|
||||
dataSources.CreateMockDB("Users").then(($createdMockUsers) => {
|
||||
cy.log("Users DB created is " + $createdMockUsers);
|
||||
mockDBNameUsers = $createdMockUsers;
|
||||
dataSources.CreateQueryAfterDSSaved();
|
||||
dataSources.AssertTableInVirtuosoList(mockDBNameUsers, "public.users");
|
||||
entityExplorer.CreateNewDsQuery(mockDBNameUsers);
|
||||
entityExplorer.CreateNewDsQuery(mockDBNameUsers);
|
||||
entityExplorer.CreateNewDsQuery(mockDBNameUsers);
|
||||
|
||||
dataSources.CreateMockDB("Movies").then(($createdMockMovies) => {
|
||||
cy.log("Movies DB created is " + $createdMockMovies);
|
||||
mockDBNameMovies = $createdMockMovies;
|
||||
dataSources.CreateQueryAfterDSSaved();
|
||||
|
||||
dataSources.AssertTableInVirtuosoList(mockDBNameMovies, "movies");
|
||||
entityExplorer.CreateNewDsQuery(mockDBNameMovies);
|
||||
entityExplorer.CreateNewDsQuery(mockDBNameMovies);
|
||||
entityExplorer.CreateNewDsQuery(mockDBNameMovies);
|
||||
|
||||
agHelper.GetNClick(locators._createNew);
|
||||
agHelper.AssertElementVisibility(entityExplorer._adsPopup);
|
||||
agHelper.ScrollTo(entityExplorer._entityExplorerWrapper, "bottom");
|
||||
agHelper.ScrollTo(entityExplorer._entityExplorerWrapper, "top");
|
||||
agHelper.AssertElementAbsence(entityExplorer._adsPopup);
|
||||
});
|
||||
});
|
||||
|
|
@ -53,6 +62,12 @@ describe("Entity explorer context menu should hide on scrolling", function () {
|
|||
"airgap",
|
||||
"1. Bug #15474 - Entity explorer menu must close on scroll - airgap",
|
||||
function () {
|
||||
entityExplorer.DragDropWidgetNVerify(draggableWidgets.MODAL);
|
||||
agHelper.GetNClick(locators._closeModal, 0, true, 0);
|
||||
entityExplorer.DragDropWidgetNVerify(draggableWidgets.MODAL);
|
||||
agHelper.GetNClick(locators._closeModal, 0, true, 0);
|
||||
entityExplorer.DragDropWidgetNVerify(draggableWidgets.MODAL);
|
||||
agHelper.GetNClick(locators._closeModal, 0, true, 0);
|
||||
entityExplorer.DragDropWidgetNVerify(draggableWidgets.MODAL);
|
||||
agHelper.GetNClick(locators._closeModal, 0, true, 0);
|
||||
entityExplorer.DragDropWidgetNVerify(draggableWidgets.MODAL);
|
||||
|
|
@ -62,51 +77,34 @@ describe("Entity explorer context menu should hide on scrolling", function () {
|
|||
entityExplorer.ExpandCollapseEntity("Modal1");
|
||||
entityExplorer.ExpandCollapseEntity("Modal2");
|
||||
entityExplorer.ExpandCollapseEntity("Modal3");
|
||||
entityExplorer.ExpandCollapseEntity("Modal4");
|
||||
entityExplorer.ExpandCollapseEntity("Modal5");
|
||||
entityExplorer.ExpandCollapseEntity("Modal6");
|
||||
|
||||
// Setup to make the explorer scrollable
|
||||
entityExplorer.ExpandCollapseEntity("Queries/JS");
|
||||
entityExplorer.ExpandCollapseEntity("Datasources");
|
||||
agHelper.ContainsNClick("Libraries");
|
||||
dataSources.CreateDataSource("Postgres");
|
||||
cy.get("@dsName").then(($createdMockUsers: any) => {
|
||||
mockDBNameUsers = $createdMockUsers;
|
||||
dataSources.CreateQueryAfterDSSaved();
|
||||
|
||||
dataSources.AssertTableInVirtuosoList(mockDBNameUsers, "public.users");
|
||||
entityExplorer.CreateNewDsQuery(mockDBNameUsers);
|
||||
entityExplorer.CreateNewDsQuery(mockDBNameUsers);
|
||||
entityExplorer.CreateNewDsQuery(mockDBNameUsers);
|
||||
|
||||
dataSources.CreateDataSource("Mongo");
|
||||
cy.get("@dsName").then(($createdMockMovies: any) => {
|
||||
mockDBNameMovies = $createdMockMovies;
|
||||
dataSources.CreateQueryAfterDSSaved();
|
||||
|
||||
dataSources.AssertTableInVirtuosoList(
|
||||
mockDBNameMovies,
|
||||
"listingAndReviews",
|
||||
);
|
||||
entityExplorer.CreateNewDsQuery(mockDBNameMovies);
|
||||
entityExplorer.CreateNewDsQuery(mockDBNameMovies);
|
||||
entityExplorer.CreateNewDsQuery(mockDBNameMovies);
|
||||
|
||||
agHelper.GetNClick(locators._createNew);
|
||||
agHelper.AssertElementVisibility(entityExplorer._adsPopup);
|
||||
agHelper.ScrollTo(entityExplorer._entityExplorerWrapper, "bottom");
|
||||
agHelper.ScrollTo(entityExplorer._entityExplorerWrapper, "top");
|
||||
agHelper.AssertElementAbsence(entityExplorer._adsPopup);
|
||||
});
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
after(() => {
|
||||
//clean up
|
||||
entityExplorer.ActionContextMenuByEntityName({
|
||||
entityNameinLeftSidebar: "Query1",
|
||||
action: "Delete",
|
||||
entityType: entityItems.Query,
|
||||
});
|
||||
|
||||
entityExplorer.ActionContextMenuByEntityName({
|
||||
entityNameinLeftSidebar: "Query2",
|
||||
action: "Delete",
|
||||
entityType: entityItems.Query,
|
||||
});
|
||||
dataSources.DeleteDatasouceFromActiveTab(mockDBNameMovies); //Since sometimes after Queries are deleted, ds is no more visible in EE tree
|
||||
dataSources.DeleteDatasouceFromActiveTab(mockDBNameUsers);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -121,8 +121,6 @@ describe("Git sync apps", function () {
|
|||
cy.get(`.t--entity-item:contains(${newPage})`).click();
|
||||
cy.wait(1000);
|
||||
// create a get api call
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.wait(2000);
|
||||
cy.CreateAPI("get_data");
|
||||
// creating get request using echo
|
||||
cy.get(apiwidget.resourceUrl)
|
||||
|
|
|
|||
|
|
@ -120,12 +120,9 @@ describe("Git sync:", function () {
|
|||
"ParentPageRenamed",
|
||||
true,
|
||||
);
|
||||
entityExplorer.SelectEntityByName("ParentApi1", "Queries/JS");
|
||||
entityExplorer.RenameEntityFromExplorer(
|
||||
"ParentApi1",
|
||||
"ParentApiRenamed",
|
||||
true,
|
||||
);
|
||||
agHelper.RemoveUIElement("Tooltip", "Add a new query/JS Object");
|
||||
entityExplorer.ExpandCollapseEntity("Queries/JS");
|
||||
entityExplorer.RenameEntityFromExplorer("ParentApi1", "ParentApiRenamed");
|
||||
|
||||
cy.switchGitBranch(parentBranchKey);
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ import {
|
|||
gitSync,
|
||||
installer,
|
||||
} from "../../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const mainBranch = "master";
|
||||
const tempBranch = "feat/tempBranch";
|
||||
|
|
@ -28,25 +31,24 @@ describe("excludeForAirgap", "Tests JS Library with Git", () => {
|
|||
});
|
||||
|
||||
it("1. Install JS Library and commit changes, create branch and verify JS library changes are present on new branch ", () => {
|
||||
entityExplorer.ExpandCollapseEntity("Libraries");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
installer.OpenInstaller();
|
||||
installer.InstallLibrary("uuidjs", "UUID");
|
||||
gitSync.CommitAndPush();
|
||||
// create new branch
|
||||
gitSync.CreateGitBranch(tempBranch, true);
|
||||
// verify js library changes are present
|
||||
entityExplorer.ExpandCollapseEntity("Libraries");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
installer.AssertLibraryinExplorer("uuidjs");
|
||||
});
|
||||
|
||||
it("2. Discard custom js library changes, verify changes are discarded also verify it deosnt show uncommitted changes", () => {
|
||||
entityExplorer.ExpandCollapseEntity("Libraries");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
installer.uninstallLibrary("uuidjs");
|
||||
installer.assertUnInstall("uuidjs");
|
||||
// discard js library uninstallation
|
||||
gitSync.DiscardChanges();
|
||||
// verify js library is present
|
||||
entityExplorer.ExpandCollapseEntity("Libraries");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
installer.AssertLibraryinExplorer("uuidjs");
|
||||
// verify no uncommitted changes are there
|
||||
agHelper.AssertElementExist(gitSync._bottomBarPull);
|
||||
|
|
@ -66,7 +68,7 @@ describe("excludeForAirgap", "Tests JS Library with Git", () => {
|
|||
it("3. Merge custom js lib changes from child branch to master, verify changes are merged", () => {
|
||||
cy.switchGitBranch(tempBranch);
|
||||
agHelper.AssertElementExist(gitSync._bottomBarPull);
|
||||
entityExplorer.ExpandCollapseEntity("Libraries");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
installer.OpenInstaller();
|
||||
installer.InstallLibrary("jspdf", "jspdf");
|
||||
//cy.commitAndPush();
|
||||
|
|
@ -84,7 +86,7 @@ describe("excludeForAirgap", "Tests JS Library with Git", () => {
|
|||
// verify custom js library is present in master branch
|
||||
cy.switchGitBranch(mainBranch);
|
||||
agHelper.AssertElementExist(gitSync._bottomBarPull);
|
||||
entityExplorer.ExpandCollapseEntity("Libraries");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
installer.AssertLibraryinExplorer("jspdf");
|
||||
});
|
||||
after(() => {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ import {
|
|||
homePage,
|
||||
locators,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
|
||||
const queryLocators = require("../../../../locators/QueryEditor.json");
|
||||
|
|
@ -183,16 +186,16 @@ describe("MaintainContext&Focus", function () {
|
|||
});
|
||||
|
||||
it("4. Datasource edit mode has to be maintained", () => {
|
||||
entityExplorer.SelectEntityByName("Appsmith", "Datasources");
|
||||
dataSources.navigateToDatasource("Appsmith");
|
||||
dataSources.EditDatasource();
|
||||
agHelper.GoBack();
|
||||
entityExplorer.SelectEntityByName("Github", "Datasources");
|
||||
dataSources.navigateToDatasource("Github");
|
||||
dataSources.AssertDSEditViewMode("View");
|
||||
entityExplorer.SelectEntityByName("Appsmith", "Datasources");
|
||||
dataSources.navigateToDatasource("Appsmith");
|
||||
dataSources.AssertDSEditViewMode("Edit");
|
||||
});
|
||||
|
||||
it("5. Maintain focus of form control inputs", () => {
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
entityExplorer.SelectEntityByName("SQL_Query");
|
||||
dataSources.ToggleUsePreparedStatement(false);
|
||||
entityExplorer.SelectEntityByName("S3_Query");
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
import HomePage from "../../../../locators/HomePage";
|
||||
import * as _ from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("excludeForAirgap", "Tests JS Libraries", () => {
|
||||
it("1. Validates Library install/uninstall", () => {
|
||||
_.entityExplorer.ExpandCollapseEntity("Libraries");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
_.installer.OpenInstaller();
|
||||
_.installer.InstallLibrary("uuidjs", "UUID");
|
||||
_.installer.uninstallLibrary("uuidjs");
|
||||
|
|
@ -11,16 +14,17 @@ describe("excludeForAirgap", "Tests JS Libraries", () => {
|
|||
});
|
||||
|
||||
it("2. Installs the library against a unique namespace when there is a collision with the existing entity", () => {
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
_.entityExplorer.DragDropWidgetNVerify(_.draggableWidgets.TABLE, 200, 200);
|
||||
_.entityExplorer.NavigateToSwitcher("Explorer");
|
||||
_.entityExplorer.RenameEntityFromExplorer("Table1", "jsonwebtoken");
|
||||
_.entityExplorer.ExpandCollapseEntity("Libraries");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
_.installer.OpenInstaller();
|
||||
_.installer.InstallLibrary("jsonwebtoken", "jsonwebtoken_1", true);
|
||||
});
|
||||
|
||||
it("3. Checks jspdf library", () => {
|
||||
_.entityExplorer.ExpandCollapseEntity("Libraries");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
_.installer.OpenInstaller();
|
||||
_.installer.InstallLibrary("jspdf", "jspdf");
|
||||
_.jsEditor.CreateJSObject(
|
||||
|
|
@ -46,7 +50,7 @@ describe("excludeForAirgap", "Tests JS Libraries", () => {
|
|||
});
|
||||
|
||||
it("4. ESM build should pass installation, uninstallation and reinstallation", () => {
|
||||
_.entityExplorer.ExpandCollapseEntity("Libraries");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
_.installer.OpenInstaller();
|
||||
_.installer.InstallLibraryViaURL(
|
||||
"https://cdn.jsdelivr.net/npm/fast-xml-parser@4.2.7/+esm",
|
||||
|
|
@ -67,7 +71,7 @@ describe("excludeForAirgap", "Tests JS Libraries", () => {
|
|||
|
||||
it("5. Shows list of recommended libraries", () => {
|
||||
const recommendedLibraryNames = ["jsonwebtoken", "jspdf", "bcryptjs"];
|
||||
_.entityExplorer.ExpandCollapseEntity("Libraries");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
_.installer.OpenInstaller();
|
||||
for (const recommendedLib of recommendedLibraryNames) {
|
||||
cy.contains(recommendedLib);
|
||||
|
|
|
|||
|
|
@ -11,6 +11,9 @@ import {
|
|||
entityItems,
|
||||
dataManager,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const successMessage = "Successful Trigger";
|
||||
const errorMessage = "Unsuccessful Trigger";
|
||||
|
|
@ -60,6 +63,7 @@ describe("Linting", () => {
|
|||
cy.get("@dsName").then(($dsName) => {
|
||||
dsName = $dsName as unknown as string;
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("1. TC 1927 - Shows correct lint error when Api is deleted or created", () => {
|
||||
|
|
@ -342,22 +346,22 @@ describe("Linting", () => {
|
|||
});
|
||||
|
||||
agHelper.AssertElementExist(locators._lintErrorElement);
|
||||
entityExplorer.ExpandCollapseEntity("Libraries");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
// install the library
|
||||
installer.OpenInstaller();
|
||||
installer.InstallLibrary("uuidjs", "UUID");
|
||||
installer.CloseInstaller();
|
||||
entityExplorer.SelectEntityByName("JSObject3");
|
||||
|
||||
agHelper.AssertElementAbsence(locators._lintErrorElement);
|
||||
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
installer.uninstallLibrary("uuidjs");
|
||||
|
||||
entityExplorer.SelectEntityByName("JSObject3");
|
||||
agHelper.AssertElementExist(locators._lintErrorElement);
|
||||
agHelper.Sleep(2000);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Libraries);
|
||||
installer.OpenInstaller();
|
||||
installer.InstallLibrary("uuidjs", "UUID");
|
||||
installer.CloseInstaller();
|
||||
|
||||
homePage.NavigateToHome();
|
||||
|
||||
homePage.CreateNewApplication();
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ describe("Validating Mobile Views for Auto Fill Widgets", function () {
|
|||
cy.dragAndDropToCanvas("codescannerwidget", { x: 100, y: 200 });
|
||||
cy.dragAndDropToCanvas("listwidgetv2", { x: 620, y: 820 });
|
||||
cy.dragAndDropToCanvas("tablewidgetv2", { x: 620, y: 820 });
|
||||
cy.dragAndDropToCanvas("tabswidget", { x: 770, y: 770 });
|
||||
cy.dragAndDropToCanvas("tabswidget", { x: 670, y: 770 });
|
||||
cy.wait(2000);
|
||||
_.deployMode.DeployApp();
|
||||
cy.wait(2000);
|
||||
|
|
|
|||
|
|
@ -42,9 +42,9 @@ describe("Validating Mobile Views for Auto Fill Widgets", function () {
|
|||
cy.dragAndDropToCanvas("currencyinputwidget", { x: 110, y: 210 });
|
||||
cy.dragAndDropToCanvas("audiowidget", { x: 250, y: 300 });
|
||||
cy.dragAndDropToCanvas("selectwidget", { x: 560, y: 560 });
|
||||
cy.dragAndDropToCanvas("checkboxwidget", { x: 770, y: 770 });
|
||||
cy.dragAndDropToCanvas("radiogroupwidget", { x: 770, y: 770 });
|
||||
cy.dragAndDropToCanvas("datepickerwidget2", { x: 770, y: 970 });
|
||||
cy.dragAndDropToCanvas("checkboxwidget", { x: 670, y: 770 });
|
||||
cy.dragAndDropToCanvas("radiogroupwidget", { x: 670, y: 770 });
|
||||
cy.dragAndDropToCanvas("datepickerwidget2", { x: 670, y: 970 });
|
||||
cy.dragAndDropToCanvas("phoneinputwidget", { x: 660, y: 810 });
|
||||
cy.dragAndDropToCanvas("categorysliderwidget", { x: 620, y: 810 });
|
||||
cy.wait(5000);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
import * as _ from "../../../../support/Objects/ObjectsCore";
|
||||
import { Widgets } from "../../../../support/Pages/DataSources";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
let datasourceName;
|
||||
|
||||
|
|
@ -9,12 +12,10 @@ describe("Add widget - Postgress DataSource", function () {
|
|||
cy.get("@dsName").then(($dsName) => {
|
||||
datasourceName = $dsName;
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("1. Validate Snipping with query and table widget on canvas", () => {
|
||||
cy.get(".t--close-editor span:contains('Back')").click({ force: true });
|
||||
cy.get(".t--back-button span:contains('Back')").click({ force: true });
|
||||
|
||||
_.autoLayout.ConvertToAutoLayoutAndVerify(false);
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
_.dataSources.EnterQuery("select * from public.configs");
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const OnboardingLocator = require("../../../../locators/FirstTimeUserOnboarding.json");
|
||||
import {
|
||||
agHelper,
|
||||
|
|
@ -23,6 +27,7 @@ describe("FirstTimeUserOnboarding", function () {
|
|||
cy.get(OnboardingLocator.introModal).should("be.visible");
|
||||
cy.get(OnboardingLocator.checklistDatasourceBtn).click();
|
||||
cy.get(OnboardingLocator.introModal).should("not.exist");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
cy.get(".t--entity-name:contains(Page1)")
|
||||
.trigger("mouseover")
|
||||
.click({ force: true });
|
||||
|
|
@ -36,7 +41,7 @@ describe("FirstTimeUserOnboarding", function () {
|
|||
agHelper.GetNAssertContains(OnboardingLocator.checklistStatus, "0 of 5");
|
||||
agHelper.AssertElementExist(OnboardingLocator.checklistDatasourceBtn);
|
||||
agHelper.GetNClick(OnboardingLocator.checklistDatasourceBtn);
|
||||
agHelper.AssertElementVisibility(OnboardingLocator.datasourcePage);
|
||||
agHelper.AssertElementVisibility(dataSources._newDatasourceContainer);
|
||||
|
||||
agHelper.GetNClick(OnboardingLocator.datasourceMock);
|
||||
|
||||
|
|
@ -48,6 +53,7 @@ describe("FirstTimeUserOnboarding", function () {
|
|||
.realHover()
|
||||
.should("have.css", "cursor", "auto");
|
||||
agHelper.GetNClick(OnboardingLocator.checklistActionBtn);
|
||||
dataSources.navigateToDatasource("Movies");
|
||||
agHelper.GetNClick(OnboardingLocator.createQuery);
|
||||
|
||||
agHelper.Sleep();
|
||||
|
|
@ -117,7 +123,7 @@ describe("FirstTimeUserOnboarding", function () {
|
|||
.should("have.css", "cursor", "pointer");
|
||||
|
||||
cy.get(OnboardingLocator.checklistDatasourceBtn).click();
|
||||
cy.get(OnboardingLocator.datasourcePage).should("be.visible");
|
||||
cy.get(dataSources._newDatasourceContainer).should("be.visible");
|
||||
cy.get(datasource.MongoDB).click();
|
||||
dataSources.FillMongoDSForm();
|
||||
cy.generateUUID().then((uid) => {
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ describe("excludeForAirgap", "Guided Tour", function () {
|
|||
dataSources.RunQuery();
|
||||
cy.get(guidedTourLocators.successButton).click();
|
||||
// Step 2: Select table widget
|
||||
entityExplorer.SelectEntityByName("CustomersTable");
|
||||
cy.get(".t--entity-name").contains("CustomersTable").click({ force: true });
|
||||
|
||||
// Step 3: Add binding to the tableData property
|
||||
propPane.UpdatePropertyFieldValue(
|
||||
|
|
@ -106,7 +106,7 @@ describe("excludeForAirgap", "Guided Tour", function () {
|
|||
cy.get(guidedTourLocators.successButton).click();
|
||||
// Step 6: Drag and drop a widget
|
||||
cy.dragAndDropToCanvas("buttonwidget", {
|
||||
x: 800,
|
||||
x: 845,
|
||||
y: 750,
|
||||
});
|
||||
cy.get(guidedTourLocators.successButton).click();
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@ import {
|
|||
import { expandLoadMoreOptions, OneClickBinding } from "./spec_utility";
|
||||
import oneClickBindingLocator from "../../../../locators/OneClickBindingLocator";
|
||||
import onboardingLocator from "../../../../locators/FirstTimeUserOnboarding.json";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const oneClickBinding = new OneClickBinding();
|
||||
|
||||
|
|
@ -67,9 +70,9 @@ describe("excludeForAirgap", "One click binding control", () => {
|
|||
oneClickBindingLocator.otherActionSelector("Connect new datasource"),
|
||||
);
|
||||
|
||||
agHelper.AssertElementExist(onboardingLocator.datasourcePage);
|
||||
agHelper.AssertElementExist(dataSources._newDatasourceContainer);
|
||||
|
||||
agHelper.GetNClick(onboardingLocator.datasourceBackBtn);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
|
||||
agHelper.GetNClick(oneClickBindingLocator.datasourceDropdownSelector);
|
||||
|
||||
|
|
@ -121,7 +124,7 @@ describe("excludeForAirgap", "One click binding control", () => {
|
|||
|
||||
dataSources.SaveDatasource();
|
||||
|
||||
entityExplorer.NavigateToSwitcher("Widgets");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
|
||||
agHelper.GetNClick(oneClickBindingLocator.datasourceDropdownSelector);
|
||||
|
||||
|
|
@ -149,15 +152,13 @@ describe("excludeForAirgap", "One click binding control", () => {
|
|||
|
||||
dataSources.SaveDatasource();
|
||||
|
||||
entityExplorer.NavigateToSwitcher("Widgets");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
propPane.MoveToTab("Style");
|
||||
|
||||
propPane.MoveToTab("Content");
|
||||
|
||||
entityExplorer.NavigateToSwitcher("Explorer");
|
||||
|
||||
[1, 2, 3, 4, 5].forEach(() => {
|
||||
apiPage.CreateAndFillApi("http://www.example.com");
|
||||
});
|
||||
|
|
|
|||
|
|
@ -11,6 +11,9 @@ import {
|
|||
import formWidgetsPage from "../../../../../locators/FormWidgets.json";
|
||||
import widgetsPage from "../../../../../locators/Widgets.json";
|
||||
import commonlocators from "../../../../../locators/commonlocators.json";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const oneClickBinding = new OneClickBinding();
|
||||
|
||||
|
|
@ -23,6 +26,7 @@ describe("Table widget one click binding feature", () => {
|
|||
dataSources.CreateDataSource("Mongo");
|
||||
|
||||
cy.get("@dsName").then((dsName) => {
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
entityExplorer.NavigateToSwitcher("Widgets");
|
||||
|
||||
entityExplorer.SelectEntityByName("Select1", "Widgets");
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@ import {
|
|||
assertHelper,
|
||||
} from "../../../../../support/Objects/ObjectsCore";
|
||||
import { OneClickBinding } from "../spec_utility";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const oneClickBinding = new OneClickBinding();
|
||||
|
||||
|
|
@ -23,6 +26,7 @@ describe("one click binding mongodb datasource", function () {
|
|||
dataSources.CreateDataSource("Mongo");
|
||||
|
||||
cy.get("@dsName").then((dsName) => {
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
entityExplorer.SelectEntityByName("Table1", "Widgets");
|
||||
|
||||
oneClickBinding.ChooseAndAssertForm(`${dsName}`, dsName, "netflix", {
|
||||
|
|
|
|||
|
|
@ -66,15 +66,7 @@ describe("Entity bottom bar", () => {
|
|||
_.debuggerHelper.AssertClosed();
|
||||
//Verify if bottom bar opens on clicking debugger icon in datasource page.
|
||||
_.debuggerHelper.ClickDebuggerIcon();
|
||||
_.debuggerHelper.AssertOpen(PageType.DataSources);
|
||||
//Verify if selected tab is errors in tab title.
|
||||
_.debuggerHelper.AssertSelectedTab("Errors");
|
||||
//Verify if bottom bar is closed on clicking close icon in datasource page.
|
||||
_.debuggerHelper.CloseBottomBar();
|
||||
_.debuggerHelper.AssertClosed();
|
||||
//Verify if bottom bar opens on clicking debugger icon in datasource page.
|
||||
_.debuggerHelper.ClickDebuggerIcon();
|
||||
_.debuggerHelper.AssertOpen(PageType.DataSources);
|
||||
});
|
||||
|
||||
it("excludeForAirgap", "5. Query bottom bar should be collapsable", () => {
|
||||
|
|
@ -107,7 +99,7 @@ describe("Entity bottom bar", () => {
|
|||
_.debuggerHelper.AssertSelectedTab("Response");
|
||||
// clean up
|
||||
_.dataSources.DeleteQuery("Query1");
|
||||
_.dataSources.DeleteDatasouceFromActiveTab(dbName);
|
||||
_.dataSources.DeleteDatasourceFromWithinDS(dbName);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -138,7 +130,7 @@ describe("Entity bottom bar", () => {
|
|||
// clean up
|
||||
_.dataSources.DeleteQuery("Query1");
|
||||
cy.get("@dsName").then(($dsName) => {
|
||||
_.dataSources.DeleteDatasouceFromActiveTab($dsName as any);
|
||||
_.dataSources.DeleteDatasourceFromWithinDS($dsName as any);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
/* eslint-disable cypress/no-unnecessary-waiting */
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
const dsl = require("../../../../fixtures/MultipleWidgetDsl.json");
|
||||
const globalSearchLocators = require("../../../../locators/GlobalSearch.json");
|
||||
|
|
@ -49,7 +53,6 @@ describe("GlobalSearch", function () {
|
|||
});
|
||||
|
||||
it("3. navigatesToApi", () => {
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.CreateAPI("SomeApi");
|
||||
|
||||
cy.get(commonlocators.globalSearchTrigger).click({ force: true });
|
||||
|
|
@ -136,6 +139,7 @@ describe("GlobalSearch", function () {
|
|||
});
|
||||
|
||||
it("7. Api actions should have API as prefix", () => {
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
cy.get(globalSearchLocators.createNew).click({ force: true });
|
||||
cy.get(globalSearchLocators.blankDatasource).first().click({ force: true });
|
||||
cy.get(datasourceHomeLocators.createAuthApiDatasource).click();
|
||||
|
|
@ -148,6 +152,7 @@ describe("GlobalSearch", function () {
|
|||
cy.fillAuthenticatedAPIForm();
|
||||
cy.saveDatasource();
|
||||
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
cy.get(globalSearchLocators.createNew).click({ force: true });
|
||||
cy.get(".ads-v2-menu__menu-item span:contains('omnibarApiDatasource')")
|
||||
.first()
|
||||
|
|
|
|||
|
|
@ -49,8 +49,6 @@ describe("Undo/Redo functionality", function () {
|
|||
});
|
||||
|
||||
it("2. Checks undo/redo for Api pane", function () {
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.log("Navigation to API Panel screen successful");
|
||||
cy.CreateAPI("FirstAPI");
|
||||
cy.get(`${apiwidget.resourceUrl} .CodeMirror-placeholder`).should(
|
||||
"have.text",
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@ import {
|
|||
propPane,
|
||||
dataManager,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("Validate JS Object Refactoring does not affect the comments & variables", () => {
|
||||
let dsName: any;
|
||||
|
|
@ -41,6 +44,7 @@ describe("Validate JS Object Refactoring does not affect the comments & variable
|
|||
dataSources.CreateDataSource("MySql", true, false);
|
||||
cy.get("@dsName").then(($dsName) => {
|
||||
dsName = $dsName;
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
|
||||
//Selecting paintings table from MySQL DS
|
||||
//Initialize new JSObject with custom code
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@ describe("Widget Property Setters - Part II - Tc #2409", () => {
|
|||
expect(val).be.empty;
|
||||
});
|
||||
agHelper.ClickButton("Submit");
|
||||
agHelper.Sleep(3000); //for the Api to run & new value to be set, for CI runs
|
||||
agHelper
|
||||
.GetText(
|
||||
locators._widgetInDeployed(draggableWidgets.INPUT_V2) +
|
||||
|
|
|
|||
|
|
@ -12,7 +12,11 @@ describe("General Settings", () => {
|
|||
it("1. App name change updates URL", () => {
|
||||
_.appSettings.OpenAppSettings();
|
||||
_.appSettings.GoToGeneralSettings();
|
||||
_.generalSettings.UpdateAppNameAndVerifyUrl(true, guid);
|
||||
_.generalSettings.UpdateAppNameAndVerifyUrl({
|
||||
reset: true,
|
||||
newAppName: guid,
|
||||
restOfUrl: "/settings",
|
||||
});
|
||||
_.homePage.GetAppName().then((appName) => {
|
||||
_.deployMode.DeployApp();
|
||||
_.appSettings.CheckUrl(appName as string, "Page1", undefined, false);
|
||||
|
|
@ -28,7 +32,12 @@ describe("General Settings", () => {
|
|||
//App name allows special and accented character
|
||||
_.appSettings.OpenAppSettings();
|
||||
_.appSettings.GoToGeneralSettings();
|
||||
_.generalSettings.UpdateAppNameAndVerifyUrl(true, guid + "!@#œ™¡", guid);
|
||||
_.generalSettings.UpdateAppNameAndVerifyUrl({
|
||||
reset: true,
|
||||
newAppName: guid + "!@#œ™¡",
|
||||
verifyAppNameAs: guid,
|
||||
restOfUrl: "/settings",
|
||||
});
|
||||
_.appSettings.ClosePane();
|
||||
|
||||
//Veirfy App name doesn't allow empty
|
||||
|
|
|
|||
|
|
@ -4,7 +4,12 @@ describe("Page Settings", () => {
|
|||
it("1. Page name change updates URL", () => {
|
||||
_.appSettings.OpenAppSettings();
|
||||
_.appSettings.GoToPageSettings("Page1");
|
||||
_.pageSettings.UpdatePageNameAndVerifyUrl("Page2", undefined, false);
|
||||
_.pageSettings.UpdatePageNameAndVerifyUrl({
|
||||
newPageName: "Page2",
|
||||
verifyPageNameAs: undefined,
|
||||
reset: false,
|
||||
restOfUrl: "/settings",
|
||||
});
|
||||
_.homePage.GetAppName().then((appName) => {
|
||||
_.deployMode.DeployApp();
|
||||
_.appSettings.CheckUrl(appName as string, "Page2", undefined, false);
|
||||
|
|
@ -16,7 +21,7 @@ describe("Page Settings", () => {
|
|||
it("2. Custom slug change updates URL", () => {
|
||||
_.appSettings.OpenAppSettings();
|
||||
_.appSettings.GoToPageSettings("Page2");
|
||||
_.pageSettings.UpdateCustomSlugAndVerifyUrl("custom");
|
||||
_.pageSettings.UpdateCustomSlugAndVerifyUrl("custom", "/settings");
|
||||
_.homePage.GetAppName().then((appName) => {
|
||||
_.deployMode.DeployApp();
|
||||
_.appSettings.CheckUrl(appName as string, "Page2", "custom", false);
|
||||
|
|
@ -46,7 +51,11 @@ describe("Page Settings", () => {
|
|||
// Page name allows accented character
|
||||
_.appSettings.OpenAppSettings();
|
||||
_.appSettings.GoToPageSettings("Page3");
|
||||
_.pageSettings.UpdatePageNameAndVerifyUrl("Page3œßð", "Page3");
|
||||
_.pageSettings.UpdatePageNameAndVerifyUrl({
|
||||
newPageName: "Page3œßð",
|
||||
verifyPageNameAs: "Page3",
|
||||
restOfUrl: "/settings",
|
||||
});
|
||||
_.appSettings.ClosePane();
|
||||
|
||||
//Page name doesn't allow special character
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ describe("excludeForAirgap", "Fork a template to an workspace", () => {
|
|||
.find(reconnectDatasourceLocators.ListItemIcon)
|
||||
.should("be.visible");
|
||||
cy.get(reconnectDatasourceLocators.DatasourceList)
|
||||
.find(reconnectDatasourceLocators.ListItemIcon, {
|
||||
.find(reconnectDatasourceLocators.DatasourceTitle, {
|
||||
withinSubject: null,
|
||||
})
|
||||
.first()
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
import * as _ from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("Visual tests for datasources", () => {
|
||||
// for any changes in UI, update the screenshot in snapshot folder, to do so:
|
||||
|
|
@ -13,10 +16,8 @@ describe("Visual tests for datasources", () => {
|
|||
const newWorkspaceName = interception.response.body.data.name;
|
||||
cy.CreateAppForWorkspace(newWorkspaceName, newWorkspaceName);
|
||||
});
|
||||
_.dataSources.NavigateToActiveTab();
|
||||
cy.get(".t--integrationsHomePage").matchImageSnapshot(
|
||||
"emptydatasourcepage",
|
||||
);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Data);
|
||||
cy.get(".t--data-blank-state").matchImageSnapshot("emptydatasourcepage");
|
||||
});
|
||||
/* cy.NavigateToDatasourceEditor();
|
||||
cy.wait(2000);
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@ describe("Button Widget Functionality", function () {
|
|||
//creating an api and calling it from the onClickAction of the button widget.
|
||||
// Creating the api
|
||||
propPane.ClearActionField("onClick");
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.CreateAPI("buttonApi");
|
||||
cy.log("Creation of buttonApi Action successful");
|
||||
cy.enterDatasourceAndPath(
|
||||
|
|
|
|||
|
|
@ -9,12 +9,81 @@ describe("3D Custom EChart feature", function () {
|
|||
});
|
||||
_.agHelper.RefreshPage();
|
||||
_.entityExplorer.DragDropWidgetNVerify(_.draggableWidgets.CHART);
|
||||
|
||||
_.propPane.SelectPropertiesDropDown("Chart type", "Custom EChart");
|
||||
|
||||
cy.wait(1000);
|
||||
cy.get(publicWidgetsPage.chartWidget).matchImageSnapshot("2DCustomECharts");
|
||||
|
||||
_.propPane.UpdatePropertyFieldValue(
|
||||
"Custom ECharts Configuration",
|
||||
`{{${JSON.stringify(this.dataSet.Custom3DEChartConfig)}}}`,
|
||||
);
|
||||
_.deployMode.DeployApp();
|
||||
|
||||
cy.wait(1000);
|
||||
cy.get(publicWidgetsPage.chartWidget).matchImageSnapshot("3DCustomECharts");
|
||||
|
||||
_.entityExplorer.SelectEntityByName("Chart1", "Widgets");
|
||||
_.propPane.UpdatePropertyFieldValue(
|
||||
"Custom ECharts Configuration",
|
||||
`{{${JSON.stringify(this.dataSet.InvalidCustom3DEChartConfig)}}}`,
|
||||
);
|
||||
|
||||
_.agHelper.AssertContains(
|
||||
"Error in Chart Data/Configuration",
|
||||
"exist",
|
||||
_.locators._widgetInDeployed(_.draggableWidgets.CHART),
|
||||
);
|
||||
|
||||
_.propPane.UpdatePropertyFieldValue(
|
||||
"Custom ECharts Configuration",
|
||||
`{{${JSON.stringify(this.dataSet.Custom3DEChartConfig)}}}`,
|
||||
);
|
||||
|
||||
_.agHelper.AssertContains(
|
||||
"Error in Chart Data/Configuration",
|
||||
"not.exist",
|
||||
_.locators._widgetInDeployed(_.draggableWidgets.CHART),
|
||||
);
|
||||
|
||||
_.propPane.UpdatePropertyFieldValue(
|
||||
"Custom ECharts Configuration",
|
||||
`{{${JSON.stringify(this.dataSet.InvalidCustom3DEChartConfig)}}}`,
|
||||
);
|
||||
|
||||
_.agHelper.AssertContains(
|
||||
"Error in Chart Data/Configuration",
|
||||
"exist",
|
||||
_.locators._widgetInDeployed(_.draggableWidgets.CHART),
|
||||
);
|
||||
|
||||
_.propPane.SelectPropertiesDropDown("Chart type", "Custom Fusion Charts");
|
||||
|
||||
cy.wait(1000);
|
||||
cy.get(publicWidgetsPage.chartWidget).matchImageSnapshot("FusionCharts");
|
||||
|
||||
_.propPane.SelectPropertiesDropDown("Chart type", "Custom EChart");
|
||||
|
||||
_.agHelper.AssertContains(
|
||||
"Error in Chart Data/Configuration",
|
||||
"exist",
|
||||
_.locators._widgetInDeployed(_.draggableWidgets.CHART),
|
||||
);
|
||||
|
||||
_.propPane.UpdatePropertyFieldValue(
|
||||
"Custom ECharts Configuration",
|
||||
`{{${JSON.stringify(this.dataSet.Custom3DEChartConfig)}}}`,
|
||||
);
|
||||
|
||||
_.agHelper.AssertContains(
|
||||
"Error in Chart Data/Configuration",
|
||||
"not.exist",
|
||||
_.locators._widgetInDeployed(_.draggableWidgets.CHART),
|
||||
);
|
||||
|
||||
cy.wait(1000);
|
||||
cy.get(publicWidgetsPage.chartWidget).matchImageSnapshot(
|
||||
"3DCustomECharts-2",
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const publish = require("../../../../../locators/publishWidgetspage.json");
|
||||
const explorer = require("../../../../../locators/explorerlocators.json");
|
||||
import * as _ from "../../../../../support/Objects/ObjectsCore";
|
||||
|
|
@ -9,6 +13,7 @@ describe("Checkbox Group Widget Functionality", function () {
|
|||
cy.get("@dsName").then(($dsName) => {
|
||||
dsName = $dsName;
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("1. Check checkbox group with dynamic query", function () {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const commonlocators = require("../../../../../locators/commonlocators.json");
|
||||
import * as _ from "../../../../../support/Objects/ObjectsCore";
|
||||
|
||||
|
|
@ -15,7 +19,8 @@ describe("Dropdown Widget Check value does not reset on navigation", function ()
|
|||
cy.wait(200);
|
||||
|
||||
//Navigate
|
||||
cy.NavigateToAPI_Panel();
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Data);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
|
||||
//Again navigate back to the widget
|
||||
_.entityExplorer.SelectEntityByName("Select3");
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@ describe("Dropdown Widget", function () {
|
|||
it("2. Dropdown-Call-Api Validation", function () {
|
||||
//creating an api and calling it from the onOptionChangeAction of the Dropdown widget.
|
||||
// Creating the api
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.CreateAPI("dropdownApi");
|
||||
cy.log("Creation of buttonApi Action successful");
|
||||
cy.enterDatasourceAndPath(
|
||||
|
|
|
|||
|
|
@ -1,10 +1,7 @@
|
|||
const commonlocators = require("../../../../../locators/commonlocators.json");
|
||||
const dslWithoutSchema = require("../../../../../fixtures/jsonFormDslWithoutSchema.json");
|
||||
const fieldPrefix = ".t--jsonformfield";
|
||||
import { ObjectsRegistry } from "../../../../../support/Objects/Registry";
|
||||
let agHelper = ObjectsRegistry.AggregateHelper;
|
||||
let locators = ObjectsRegistry.CommonLocators;
|
||||
let propPane = ObjectsRegistry.PropertyPane;
|
||||
import { agHelper, propPane } from "../../../../../support/Objects/ObjectsCore";
|
||||
|
||||
function selectAndValidateOption(selector, option, expectedFormData) {
|
||||
// Select option Zero
|
||||
|
|
@ -50,7 +47,7 @@ describe("JSONForm RadioGroup Field", () => {
|
|||
cy.closePropertyPane();
|
||||
});
|
||||
|
||||
it("accepts numeric options value", () => {
|
||||
it("1. accepts numeric options value", () => {
|
||||
cy.openPropertyPane("jsonformwidget");
|
||||
const schema = {
|
||||
binary: 1,
|
||||
|
|
@ -76,7 +73,7 @@ describe("JSONForm RadioGroup Field", () => {
|
|||
cy.selectDropdownValue(commonlocators.jsonFormFieldType, /^Radio Group$/);
|
||||
|
||||
clearOptionsProperty();
|
||||
cy.testJsontext("options", JSON.stringify(options));
|
||||
propPane.UpdatePropertyFieldValue("Options", JSON.stringify(options));
|
||||
|
||||
cy.wait(2000);
|
||||
|
||||
|
|
@ -99,7 +96,7 @@ describe("JSONForm RadioGroup Field", () => {
|
|||
});
|
||||
});
|
||||
|
||||
it("accepts string options value", () => {
|
||||
it("2. accepts string options value", () => {
|
||||
cy.openPropertyPane("jsonformwidget");
|
||||
const schema = {
|
||||
accept: "N",
|
||||
|
|
@ -126,8 +123,7 @@ describe("JSONForm RadioGroup Field", () => {
|
|||
cy.selectDropdownValue(commonlocators.jsonFormFieldType, /^Radio Group$/);
|
||||
|
||||
clearOptionsProperty();
|
||||
cy.testJsontext("options", JSON.stringify(options));
|
||||
|
||||
propPane.UpdatePropertyFieldValue("Options", JSON.stringify(options));
|
||||
cy.wait(2000);
|
||||
|
||||
// Validate initial form data
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const publishLocators = require("../../../../../locators/publishWidgetspage.json");
|
||||
const datasource = require("../../../../../locators/DatasourcesEditor.json");
|
||||
const queryLocators = require("../../../../../locators/QueryEditor.json");
|
||||
|
|
@ -328,17 +332,10 @@ describe("List widget v2 - Basic server side data tests", () => {
|
|||
// Click on sample(mock) user database.
|
||||
cy.get(datasource.mockUserDatabase).click();
|
||||
|
||||
_.dataSources.NavigateToActiveTab();
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Data);
|
||||
|
||||
// Choose the first data source which consists of users keyword & Click on the "New query +"" button
|
||||
cy.get(`${datasource.datasourceCard}`)
|
||||
.filter(":contains('Users')")
|
||||
.first()
|
||||
.within(() => {
|
||||
cy.get(`${datasource.createQuery}`).click({
|
||||
force: true,
|
||||
});
|
||||
});
|
||||
_.dataSources.CreateQueryFromActiveTab("Users");
|
||||
|
||||
// Click the editing field
|
||||
cy.get(".t--action-name-edit-field").click({
|
||||
|
|
@ -379,7 +376,7 @@ describe("List widget v2 - Basic server side data tests", () => {
|
|||
);
|
||||
it(
|
||||
"airgap",
|
||||
"6. no of items rendered should be equal to page size - airgap",
|
||||
"7. no of items rendered should be equal to page size - airgap",
|
||||
() => {
|
||||
_.dataSources.CreateDataSource("Postgres");
|
||||
cy.wait(1000);
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ describe("List widget v2 onItemClick", () => {
|
|||
|
||||
entityExplorer.DragDropWidgetNVerify(
|
||||
draggableWidgets.INPUT_V2,
|
||||
250,
|
||||
150,
|
||||
50,
|
||||
draggableWidgets.CONTAINER,
|
||||
);
|
||||
|
|
@ -94,7 +94,7 @@ describe("List widget v2 onItemClick", () => {
|
|||
|
||||
entityExplorer.DragDropWidgetNVerify(
|
||||
draggableWidgets.SELECT,
|
||||
250,
|
||||
150,
|
||||
50,
|
||||
draggableWidgets.CONTAINER,
|
||||
);
|
||||
|
|
@ -107,7 +107,7 @@ describe("List widget v2 onItemClick", () => {
|
|||
|
||||
entityExplorer.DragDropWidgetNVerify(
|
||||
draggableWidgets.BUTTON,
|
||||
250,
|
||||
150,
|
||||
50,
|
||||
draggableWidgets.CONTAINER,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -27,7 +27,8 @@ describe("Modal Widget test cases", function () {
|
|||
|
||||
//Verify that the Modal widget opens correctly when configured on a button click.
|
||||
agHelper.ClickButton("Submit");
|
||||
agHelper.AssertElementVisibility(locators._modal);
|
||||
agHelper.WaitUntilEleAppear(locators._modal);
|
||||
agHelper.AssertElementExist(locators._modal);
|
||||
|
||||
//Verify that the Modal widget is closed and no longer visible on the screen on clicking the "X" button.
|
||||
agHelper.AssertElementVisibility(
|
||||
|
|
@ -38,7 +39,8 @@ describe("Modal Widget test cases", function () {
|
|||
|
||||
//Verify that clicking outside the Modal widget closes it as expected when Quick dismiss is enabled
|
||||
agHelper.ClickButton("Submit");
|
||||
agHelper.AssertElementVisibility(locators._modal);
|
||||
agHelper.WaitUntilEleAppear(locators._modal);
|
||||
agHelper.AssertElementExist(locators._modal);
|
||||
agHelper.ClickOutside(350, 150, false);
|
||||
agHelper.Sleep();
|
||||
agHelper.AssertElementAbsence(locators._modal);
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ describe("Dropdown Widget Functionality", function () {
|
|||
.find(widgetLocators.menuButton)
|
||||
.then(($menuButton) => {
|
||||
const outerWidth = Cypress.$($menuButton).outerWidth();
|
||||
expect(parseInt(outerWidth)).to.equal(147);
|
||||
expect(parseInt(outerWidth)).to.equal(137);
|
||||
});
|
||||
cy.get(formWidgetsPage.menuButtonWidget)
|
||||
.find(widgetLocators.menuButton)
|
||||
|
|
@ -41,7 +41,7 @@ describe("Dropdown Widget Functionality", function () {
|
|||
cy.get(".menu-button-popover")
|
||||
.invoke("outerWidth")
|
||||
.then((width) => {
|
||||
expect(parseInt(width)).to.equal(147);
|
||||
expect(parseInt(width)).to.equal(137);
|
||||
});
|
||||
|
||||
// MultiSelect
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ describe("Statbox Widget", function () {
|
|||
entityExplorer.SelectEntityByName("IconButton1", "Statbox1");
|
||||
cy.get(".t--property-pane-section-general").then(() => {
|
||||
// changing the icon to arrow-up
|
||||
cy.get(".bp3-button-text").first().click();
|
||||
cy.get(".bp3-button-text").first().click().wait(500);
|
||||
cy.get(".bp3-icon-arrow-up").click().wait(500);
|
||||
// opening modal from onClick action of icon button
|
||||
cy.createModal("Modal", "onClick");
|
||||
|
|
|
|||
|
|
@ -252,7 +252,7 @@ describe("Radio Widget test cases", function () {
|
|||
agHelper.AssertCSS(
|
||||
widgetLocators.radioWidgetLabelContainer,
|
||||
"width",
|
||||
"59.765625px",
|
||||
"55.859375px",
|
||||
);
|
||||
agHelper.GetNClick(widgetLocators.selectWidgetWidthPlusBtn);
|
||||
agHelper.GetNClick(widgetLocators.selectWidgetWidthPlusBtn);
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ describe("Select widget tests", function () {
|
|||
agHelper.AssertCSS(
|
||||
widgetLocators.selectWidgetLabelContainer,
|
||||
"width",
|
||||
"59.765625px",
|
||||
"55.859375px",
|
||||
);
|
||||
agHelper.GetNClick(widgetLocators.selectWidgetWidthPlusBtn);
|
||||
agHelper.GetNClick(widgetLocators.selectWidgetWidthPlusBtn);
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ describe("Select widget tests", function () {
|
|||
deployMode.DeployApp(locators._widgetInDeployed(draggableWidgets.SELECT));
|
||||
|
||||
//Validate filtered data
|
||||
agHelper.Sleep(3000); //Wait for widget to settle
|
||||
agHelper.Sleep(6000); //Wait for widget to settle for CI failure
|
||||
agHelper.GetNClick(locators._widgetInDeployed(draggableWidgets.SELECT));
|
||||
agHelper.TypeText(widgetLocators.selectWidgetFilter, "Ulf");
|
||||
agHelper.Sleep(3000); //Wait for widget filter to settle for CI runs
|
||||
|
|
|
|||
|
|
@ -160,10 +160,6 @@ describe("Tree Select widget Tests", function () {
|
|||
// Execute the query
|
||||
let postgresDatasourceName: any;
|
||||
dataSources.StartDataSourceRoutes();
|
||||
agHelper
|
||||
.GetElement(locators._newDataSourceBtn)
|
||||
.last()
|
||||
.click({ force: true });
|
||||
dataSources.NavigateToDSCreateNew();
|
||||
dataSources.CreatePlugIn("PostgreSQL");
|
||||
agHelper.GenerateUUID();
|
||||
|
|
@ -300,7 +296,7 @@ describe("Tree Select widget Tests", function () {
|
|||
propPane.UpdatePropertyFieldValue(
|
||||
"srcDoc",
|
||||
`<div id="target"></div>
|
||||
|
||||
|
||||
<script>
|
||||
window.addEventListener('message', (event) => {
|
||||
const tgt = document.querySelector("#target")
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const dsl = require("../../../../fixtures/widgetSelection.json");
|
||||
import * as _ from "../../../../support/Objects/ObjectsCore";
|
||||
|
||||
|
|
@ -52,10 +56,11 @@ describe("Widget Selection", function () {
|
|||
// Switch to the Explorer Pane
|
||||
_.entityExplorer.NavigateToSwitcher("Explorer");
|
||||
// Click to create a New Data Source
|
||||
cy.get(".t--entity-add-btn").eq(3).click();
|
||||
_.dataSources.NavigateToDSCreateNew();
|
||||
// Hit CTRL +A
|
||||
cy.get("body").type("{ctrl}{a}");
|
||||
// Switch to the Canvas
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
_.entityExplorer.NavigateToSwitcher("Widgets");
|
||||
// Widgets should not be selected
|
||||
cy.get(".t--multi-selection-box").should("not.exist");
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const testdata = require("../../../../fixtures/testdata.json");
|
||||
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
|
||||
|
||||
|
|
@ -14,6 +18,7 @@ describe("API Panel Test Functionality", function () {
|
|||
action: "Delete",
|
||||
entityType: entityItems.Api,
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("1. PUT Action test API feature", function () {
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import {
|
|||
describe("API Panel Test Functionality ", function () {
|
||||
it("1. Test API copy/Move/delete feature", function () {
|
||||
cy.Createpage("SecondPage");
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.CreateAPI("FirstAPI");
|
||||
cy.enterDatasourceAndPath(testdata.baseUrl, "{{ '/random' }}");
|
||||
cy.assertPageSave();
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const testdata = require("../../../../fixtures/testdata.json");
|
||||
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
|
||||
import appPage from "../../../../locators/CMSApplocators";
|
||||
|
|
@ -5,7 +9,6 @@ import apiEditor from "../../../../locators/ApiEditor";
|
|||
|
||||
describe("API Panel request body", function () {
|
||||
it("1. Check whether the default content-type changes on changing method types and remains unchanged on switching to GET", function () {
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.CreateAPI("FirstAPI");
|
||||
|
||||
// Checking for default Body type to be NONE
|
||||
|
|
@ -51,7 +54,7 @@ describe("API Panel request body", function () {
|
|||
});
|
||||
|
||||
it("2. Bug 14624 - Verifying the content-type none is not added", function () {
|
||||
cy.NavigateToAPI_Panel();
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
cy.CreateAPI("FirstAPI");
|
||||
|
||||
// Checking for default Body type to be NONE
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const testdata = require("../../../../fixtures/testdata.json");
|
||||
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
|
||||
|
||||
|
|
@ -14,8 +18,6 @@ describe("API Panel Test Functionality", function () {
|
|||
|
||||
it("1. Test Search API fetaure", function () {
|
||||
cy.log("Login Successful");
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.log("Navigation to API Panel screen successful");
|
||||
cy.CreateAPI("FirstAPI");
|
||||
cy.get(".CodeMirror-placeholder")
|
||||
.first()
|
||||
|
|
@ -36,12 +38,11 @@ describe("API Panel Test Functionality", function () {
|
|||
action: "Delete",
|
||||
entityType: entityItems.Api,
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
entityExplorer.AssertEntityAbsenceInExplorer("SecondAPI");
|
||||
});
|
||||
|
||||
it("2. Should update loading state after cancellation of confirmation for run query", function () {
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.log("Navigation to API Panel screen successful");
|
||||
cy.CreateAPI("FirstAPI");
|
||||
cy.get(".CodeMirror-placeholder")
|
||||
.first()
|
||||
|
|
@ -56,7 +57,6 @@ describe("API Panel Test Functionality", function () {
|
|||
});
|
||||
|
||||
it("3. Should not crash on key delete", function () {
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.CreateAPI("CrashTestAPI");
|
||||
cy.SelectAction(testdata.postAction);
|
||||
cy.get(apiwidget.headerKey)
|
||||
|
|
@ -71,7 +71,6 @@ describe("API Panel Test Functionality", function () {
|
|||
});
|
||||
|
||||
it("4. Should correctly parse query params", function () {
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.CreateAPI("APIWithQueryParams");
|
||||
cy.enterDatasourceAndPath(testdata.baseUrl, testdata.methodWithQueryParam);
|
||||
cy.ValidateQueryParams({
|
||||
|
|
@ -81,7 +80,6 @@ describe("API Panel Test Functionality", function () {
|
|||
});
|
||||
|
||||
it("5. Shows evaluated value pane when url field is focused", function () {
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.CreateAPI("TestAPI");
|
||||
cy.get(".CodeMirror textarea")
|
||||
.first()
|
||||
|
|
|
|||
|
|
@ -1,14 +1,17 @@
|
|||
import {
|
||||
agHelper,
|
||||
jsEditor,
|
||||
propPane,
|
||||
deployMode,
|
||||
apiPage,
|
||||
entityItems,
|
||||
entityExplorer,
|
||||
locators,
|
||||
assertHelper,
|
||||
deployMode,
|
||||
entityExplorer,
|
||||
entityItems,
|
||||
jsEditor,
|
||||
locators,
|
||||
propPane,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("Validate API request body panel", () => {
|
||||
beforeEach(() => {
|
||||
|
|
@ -33,6 +36,7 @@ describe("Validate API request body panel", () => {
|
|||
action: "Delete",
|
||||
entityType: entityItems.Api,
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("2. Checks whether No body error message is shown when None API body content type is selected", function () {
|
||||
|
|
@ -44,6 +48,7 @@ describe("Validate API request body panel", () => {
|
|||
action: "Delete",
|
||||
entityType: entityItems.Api,
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("3. Checks whether header content type is being changed when FORM_URLENCODED API body content type is selected", function () {
|
||||
|
|
@ -64,6 +69,7 @@ describe("Validate API request body panel", () => {
|
|||
action: "Delete",
|
||||
entityType: entityItems.Api,
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("4. Checks whether header content type is being changed when MULTIPART_FORM_DATA API body content type is selected", function () {
|
||||
|
|
@ -84,6 +90,7 @@ describe("Validate API request body panel", () => {
|
|||
action: "Delete",
|
||||
entityType: entityItems.Api,
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("5. Checks whether content type 'FORM_URLENCODED' is preserved when user selects None API body content type", function () {
|
||||
|
|
@ -96,6 +103,7 @@ describe("Validate API request body panel", () => {
|
|||
action: "Delete",
|
||||
entityType: entityItems.Api,
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("6. Checks whether content type 'MULTIPART_FORM_DATA' is preserved when user selects None API body content type", function () {
|
||||
|
|
@ -108,6 +116,7 @@ describe("Validate API request body panel", () => {
|
|||
action: "Delete",
|
||||
entityType: entityItems.Api,
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("7. Checks MultiPart form data for a File Type upload + Bug 12476", () => {
|
||||
|
|
|
|||
|
|
@ -14,8 +14,6 @@ describe("Moustache test Functionality", function () {
|
|||
entityExplorer.SelectEntityByName("TestTextBox", "Aditya");
|
||||
cy.widgetText("Api", widgetsPage.textWidget, widgetsPage.textInputval);
|
||||
cy.testCodeMirror(testdata.methods);
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.log("Navigation to API Panel screen successful");
|
||||
cy.CreateAPI("TestAPINew");
|
||||
cy.log("Creation of API Action successful");
|
||||
cy.enterDatasourceAndPath(testdata.baseUrl, testdata.moustacheMethod);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const testdata = require("../../../../fixtures/testdata.json");
|
||||
import { agHelper, apiPage } from "../../../../support/Objects/ObjectsCore";
|
||||
import apiEditor from "../../../../locators/ApiEditor";
|
||||
|
|
@ -7,8 +11,6 @@ const testUrl1 =
|
|||
describe("Bug 14666: Api Response Test Functionality ", function () {
|
||||
it("1. Test table loading when data is in array format", function () {
|
||||
cy.log("Login Successful");
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.log("Navigation to API Panel screen successful");
|
||||
apiPage.CreateAndFillApi(testUrl1, "TableTestAPI");
|
||||
agHelper.AssertAutoSave();
|
||||
apiPage.RunAPI();
|
||||
|
|
@ -17,9 +19,7 @@ describe("Bug 14666: Api Response Test Functionality ", function () {
|
|||
});
|
||||
|
||||
it("2. Test table loading when data is not in array format", function () {
|
||||
cy.log("Login Successful");
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.log("Navigation to API Panel screen successful");
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
apiPage.CreateAndFillApi(
|
||||
testdata.baseUrl + testdata.echoMethod,
|
||||
"TableTestAPI",
|
||||
|
|
|
|||
|
|
@ -4,6 +4,9 @@ import {
|
|||
apiPage,
|
||||
entityItems,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
let APIName;
|
||||
const testUrl1 =
|
||||
|
|
@ -16,12 +19,11 @@ const testUrl3 =
|
|||
describe("API Panel Test Functionality ", function () {
|
||||
it("1. Test Search API fetaure", function () {
|
||||
cy.log("Login Successful");
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.log("Navigation to API Panel screen successful");
|
||||
cy.generateUUID().then((uid) => {
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
cy.CreateAPI(`FirstAPI_${uid}`);
|
||||
cy.log("Creation of FirstAPI Action successful");
|
||||
cy.NavigateToAPI_Panel();
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
cy.CreateAPI(`SecondAPI_${uid}`);
|
||||
cy.CheckAndUnfoldEntityItem("Queries/JS");
|
||||
cy.log("Creation of SecondAPI Action successful");
|
||||
|
|
@ -54,7 +56,6 @@ describe("API Panel Test Functionality ", function () {
|
|||
cy.checkIfApiPaneIsVisible();
|
||||
});
|
||||
it("3. Bug 14242: Appsmith crash when create an API pointing to Github hosted json", function () {
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.generateUUID().then((uid) => {
|
||||
APIName = uid;
|
||||
cy.CreateAPI(APIName);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@ import {
|
|||
entityExplorer,
|
||||
apiPage,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("Validate API Panel CSS Styles", function () {
|
||||
const backgroundColorGray200 = "rgb(227, 232, 239)";
|
||||
|
|
@ -63,6 +66,7 @@ describe("Validate API Panel CSS Styles", function () {
|
|||
//Create two datasource for testing binding prompt background-color
|
||||
cy.createNewAuthApiDatasource(appName1);
|
||||
cy.createNewAuthApiDatasource(appName2);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
entityExplorer.ExpandCollapseEntity("Queries/JS");
|
||||
cy.get(commonLocators.entityName).contains("test_styles").click();
|
||||
//Click on API search editor
|
||||
|
|
@ -80,12 +84,12 @@ describe("Validate API Panel CSS Styles", function () {
|
|||
.should("have.css", "background-color", hover);
|
||||
//Delete created test API
|
||||
cy.DeleteAPI();
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
cy.wait(2000);
|
||||
cy.get(commonLocators.entityName)
|
||||
.contains("test_styles")
|
||||
.should("not.exist");
|
||||
//Delete two datasources
|
||||
entityExplorer.ExpandCollapseEntity("Datasources");
|
||||
cy.deleteDatasource(appName1);
|
||||
cy.deleteDatasource(appName2);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
|
||||
const globalSearchLocators = require("../../../../locators/GlobalSearch.json");
|
||||
import ApiEditor from "../../../../locators/ApiEditor";
|
||||
|
|
@ -13,7 +17,6 @@ import {
|
|||
describe("Test curl import flow", function () {
|
||||
it("1. Test curl import flow Run and Delete", function () {
|
||||
localStorage.setItem("ApiPaneV2", "ApiPaneV2");
|
||||
cy.NavigateToApiEditor();
|
||||
dataSources.NavigateToDSCreateNew();
|
||||
cy.get(ApiEditor.curlImage).click({ force: true });
|
||||
cy.get("textarea").type(
|
||||
|
|
|
|||
|
|
@ -208,12 +208,7 @@ describe("Validate Elasticsearch DS", () => {
|
|||
action: "Delete",
|
||||
entityType: entityItems.Query,
|
||||
});
|
||||
entityExplorer.SelectEntityByName(dsName, "Datasources");
|
||||
entityExplorer.ActionContextMenuByEntityName({
|
||||
entityNameinLeftSidebar: dsName,
|
||||
action: "Delete",
|
||||
entityType: entityItems.Datasource,
|
||||
});
|
||||
dataSources.DeleteDatasourceFromWithinDS(dsName);
|
||||
//dataSources.StopNDeleteContainer(containerName);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -353,7 +353,7 @@ describe("Validate Firestore DS", () => {
|
|||
action: "Delete",
|
||||
entityType: entityItems.Query,
|
||||
});
|
||||
dataSources.DeleteDatasouceFromActiveTab(dsName, 409);
|
||||
dataSources.DeleteDatasourceFromWithinDS(dsName, 409);
|
||||
//commenting below since after query delete, we run into risk of not seeing the datasource in EntityExplorer
|
||||
// entityExplorer.SelectEntityByName(dsName, "Datasources");
|
||||
// entityExplorer.ActionContextMenuByEntityName({
|
||||
|
|
|
|||
|
|
@ -13,6 +13,10 @@ import {
|
|||
jsEditor,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import { Widgets } from "../../../../support/Pages/DataSources";
|
||||
import datasource from "../../../../locators/DatasourcesEditor.json";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("Validate Oracle DS", () => {
|
||||
let dataSourceName: string, guid: any, query: string, selectQuery: string;
|
||||
|
|
@ -108,7 +112,8 @@ describe("Validate Oracle DS", () => {
|
|||
dataSources.AssertDataSourceInfo(["Host address", "Port", "Service Name"]);
|
||||
agHelper.ClickButton("Edit"); //Navigate to Edit page & check if DS edit is opened
|
||||
dataSources.ValidateNSelectDropdown("SSL mode", "Disable");
|
||||
agHelper.GoBack(); //Do not edit anythin, go back to active ds list, ensure no modal is opened
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Data);
|
||||
dataSources.AssertDSInActiveList(dataSourceName);
|
||||
});
|
||||
|
||||
|
|
@ -172,8 +177,6 @@ describe("Validate Oracle DS", () => {
|
|||
dataSources.EnterQuery(query);
|
||||
dataSources.RunQuery();
|
||||
|
||||
dataSources.AssertTableInVirtuosoList(dataSourceName, guid.toUpperCase());
|
||||
|
||||
query = `INSERT INTO ${guid} (
|
||||
aircraft_id,
|
||||
aircraft_type,
|
||||
|
|
@ -195,7 +198,11 @@ describe("Validate Oracle DS", () => {
|
|||
TO_DATE('2020-01-15', 'YYYY-MM-DD'),
|
||||
TO_DATE('{{DatePicker1.formattedDate}}', 'YYYY-MM-DD'),
|
||||
'This aircraft is used for domestic flights.')`;
|
||||
entityExplorer.ActionTemplateMenuByEntityName(guid.toUpperCase(), "Select");
|
||||
dataSources.createQueryWithDatasourceSchemaTemplate(
|
||||
dataSourceName,
|
||||
guid.toUpperCase(),
|
||||
"Select",
|
||||
);
|
||||
dataSources.RunQuery();
|
||||
agHelper
|
||||
.GetText(dataSources._noRecordFound)
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ describe("Validate Redis DS", () => {
|
|||
action: "Delete",
|
||||
entityType: entityItems.Query,
|
||||
});
|
||||
dataSources.DeleteDatasouceFromActiveTab(dsName);
|
||||
dataSources.DeleteDatasourceFromWithinDS(dsName);
|
||||
//commenting below since after query delete, we run into risk of not seeing the datasource in EntityExplorer
|
||||
// entityExplorer.SelectEntityByName(dsName, "Datasources");
|
||||
// entityExplorer.ActionContextMenuByEntityName({
|
||||
|
|
|
|||
|
|
@ -10,6 +10,9 @@ import {
|
|||
draggableWidgets,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import { Widgets } from "../../../../support/Pages/DataSources";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
describe("Validate Mongo URI CRUD with JSON Form", () => {
|
||||
let dsName: any;
|
||||
|
|
@ -23,6 +26,7 @@ describe("Validate Mongo URI CRUD with JSON Form", () => {
|
|||
agHelper.RenameWithInPane(dsName, false);
|
||||
dataSources.FillMongoDatasourceFormWithURI();
|
||||
dataSources.TestSaveDatasource();
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
entityExplorer.AddNewPage("Generate page with data");
|
||||
agHelper.GetNClick(dataSources._selectDatasourceDropdown);
|
||||
agHelper.GetNClickByContains(dataSources._dropdownOption, dsName);
|
||||
|
|
@ -41,7 +45,7 @@ describe("Validate Mongo URI CRUD with JSON Form", () => {
|
|||
table.WaitUntilTableLoad();
|
||||
//Should not be able to delete ds until app is published again
|
||||
//coz if app is published & shared then deleting ds may cause issue, So!
|
||||
dataSources.DeleteDatasouceFromActiveTab(dsName as string, 409);
|
||||
dataSources.DeleteDatasourceFromWithinDS(dsName as string, 409);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ describe("Validate Mongo CRUD with JSON Form", () => {
|
|||
it("1. Create DS & then Add new Page and generate CRUD template using created datasource", () => {
|
||||
appSettings.OpenPaneAndChangeTheme("Water Lily");
|
||||
|
||||
dataSources.CreateDataSource("Mongo");
|
||||
dataSources.CreateDataSource("Mongo", true, false);
|
||||
cy.get("@dsName").then(($dsName: any) => {
|
||||
dsName = $dsName;
|
||||
entityExplorer.AddNewPage();
|
||||
|
|
@ -57,7 +57,7 @@ describe("Validate Mongo CRUD with JSON Form", () => {
|
|||
//coz if app is published & shared then deleting ds may cause issue, So!
|
||||
cy.get("@dsName").then(($dsName) => {
|
||||
dsName = $dsName;
|
||||
dataSources.DeleteDatasouceFromActiveTab(dsName as string, 409);
|
||||
dataSources.DeleteDatasourceFromWithinDS(dsName as string, 409);
|
||||
});
|
||||
|
||||
// deployMode.DeployApp();
|
||||
|
|
@ -80,7 +80,7 @@ describe("Validate Mongo CRUD with JSON Form", () => {
|
|||
});
|
||||
deployMode.DeployApp();
|
||||
deployMode.NavigateBacktoEditor();
|
||||
dataSources.DeleteDatasouceFromActiveTab(dsName as string, 200);
|
||||
dataSources.DeleteDatasourceFromWithinDS(dsName as string, 200);
|
||||
});
|
||||
|
||||
//Update, delete, Add goes here
|
||||
|
|
|
|||
|
|
@ -10,10 +10,19 @@ import {
|
|||
table,
|
||||
assertHelper,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
// import { INTERCEPT } from "../../../../fixtures/variables";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
import { featureFlagIntercept } from "../../../../support/Objects/FeatureFlags";
|
||||
let dsName: any;
|
||||
|
||||
describe("Validate MySQL Generate CRUD with JSON Form", () => {
|
||||
before(() => {
|
||||
featureFlagIntercept({
|
||||
ab_gsheet_schema_enabled: true,
|
||||
ab_mock_mongo_schema_enabled: true,
|
||||
});
|
||||
});
|
||||
// beforeEach(function() {
|
||||
// if (INTERCEPT.MYSQL) {
|
||||
// cy.log("MySQL DB is not found. Using intercept");
|
||||
|
|
@ -25,6 +34,7 @@ describe("Validate MySQL Generate CRUD with JSON Form", () => {
|
|||
dataSources.CreateDataSource("MySql");
|
||||
cy.get("@dsName").then(($dsName) => {
|
||||
dsName = $dsName;
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
entityExplorer.AddNewPage();
|
||||
entityExplorer.AddNewPage("Generate page with data");
|
||||
agHelper.GetNClick(dataSources._selectDatasourceDropdown);
|
||||
|
|
@ -54,7 +64,7 @@ describe("Validate MySQL Generate CRUD with JSON Form", () => {
|
|||
//coz if app is published & shared then deleting ds may cause issue, So!
|
||||
cy.get("@dsName").then(($dsName) => {
|
||||
dsName = $dsName;
|
||||
dataSources.DeleteDatasouceFromActiveTab(dsName as string, 409);
|
||||
dataSources.DeleteDatasourceFromWithinDS(dsName as string, 409);
|
||||
agHelper.WaitUntilAllToastsDisappear();
|
||||
});
|
||||
deployMode.DeployApp(locators._emptyPageTxt);
|
||||
|
|
@ -62,7 +72,7 @@ describe("Validate MySQL Generate CRUD with JSON Form", () => {
|
|||
deployMode.NavigateBacktoEditor();
|
||||
cy.get("@dsName").then(($dsName) => {
|
||||
dsName = $dsName;
|
||||
dataSources.DeleteDatasouceFromActiveTab(dsName as string, 200);
|
||||
dataSources.DeleteDatasourceFromWithinDS(dsName as string, 200);
|
||||
});
|
||||
agHelper.WaitUntilAllToastsDisappear();
|
||||
});
|
||||
|
|
@ -153,12 +163,12 @@ describe("Validate MySQL Generate CRUD with JSON Form", () => {
|
|||
//agHelper.VerifyEvaluatedValue(tableCreateQuery); //failing sometimes!
|
||||
|
||||
dataSources.RunQueryNVerifyResponseViews();
|
||||
dataSources.AssertTableInVirtuosoList(dsName, "productlines");
|
||||
|
||||
agHelper.ActionContextMenuWithInPane({
|
||||
action: "Delete",
|
||||
entityType: entityItems.Query,
|
||||
});
|
||||
|
||||
dataSources.AssertTableInVirtuosoList(dsName, "productlines");
|
||||
});
|
||||
|
||||
it("5. Verify Generate CRUD for the new table & Verify Deploy mode for table - Productlines", () => {
|
||||
|
|
@ -272,18 +282,11 @@ describe("Validate MySQL Generate CRUD with JSON Form", () => {
|
|||
//agHelper.VerifyEvaluatedValue(tableCreateQuery);
|
||||
|
||||
dataSources.RunQueryNVerifyResponseViews();
|
||||
entityExplorer.ExpandCollapseEntity("Datasources");
|
||||
entityExplorer.ExpandCollapseEntity(dsName);
|
||||
entityExplorer.ActionContextMenuByEntityName({
|
||||
entityNameinLeftSidebar: dsName,
|
||||
action: "Refresh",
|
||||
});
|
||||
agHelper.AssertElementAbsence(
|
||||
entityExplorer._entityNameInExplorer("Stores"),
|
||||
);
|
||||
dataSources.AssertTableInVirtuosoList(dsName, "Stores", false);
|
||||
});
|
||||
|
||||
it("10. Verify application does not break when user runs the query with wrong table name", function () {
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
entityExplorer.SelectEntityByName("DropProductlines", "Queries/JS");
|
||||
dataSources.RunQuery({ toValidateResponse: false });
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
// import { INTERCEPT } from "../../../../fixtures/variables";
|
||||
import { featureFlagIntercept } from "../../../../support/Objects/FeatureFlags";
|
||||
|
||||
let dsName: any, newStoreSecret: any;
|
||||
|
||||
import {
|
||||
|
|
@ -64,12 +66,12 @@ describe("Validate MySQL Generate CRUD with JSON Form", () => {
|
|||
//agHelper.VerifyEvaluatedValue(tableCreateQuery);
|
||||
|
||||
dataSources.RunQueryNVerifyResponseViews();
|
||||
dataSources.AssertTableInVirtuosoList(dsName, "Stores");
|
||||
|
||||
agHelper.ActionContextMenuWithInPane({
|
||||
action: "Delete",
|
||||
entityType: entityItems.Query,
|
||||
});
|
||||
|
||||
dataSources.AssertTableInVirtuosoList(dsName, "Stores");
|
||||
});
|
||||
|
||||
it("2. Validate Select record from Postgress datasource & verify query response", () => {
|
||||
|
|
@ -359,19 +361,12 @@ describe("Validate MySQL Generate CRUD with JSON Form", () => {
|
|||
//agHelper.VerifyEvaluatedValue(tableCreateQuery);
|
||||
|
||||
dataSources.RunQueryNVerifyResponseViews();
|
||||
dataSources.AssertTableInVirtuosoList(dsName, "Stores", false);
|
||||
|
||||
agHelper.ActionContextMenuWithInPane({
|
||||
action: "Delete",
|
||||
entityType: entityItems.Query,
|
||||
});
|
||||
entityExplorer.ExpandCollapseEntity("Datasources");
|
||||
entityExplorer.ExpandCollapseEntity(dsName);
|
||||
entityExplorer.ActionContextMenuByEntityName({
|
||||
entityNameinLeftSidebar: dsName,
|
||||
action: "Refresh",
|
||||
});
|
||||
agHelper.AssertElementAbsence(
|
||||
entityExplorer._entityNameInExplorer("Stores"),
|
||||
);
|
||||
});
|
||||
|
||||
after(
|
||||
|
|
|
|||
|
|
@ -10,6 +10,9 @@ import {
|
|||
entityItems,
|
||||
assertHelper,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
|
||||
let dsName: any;
|
||||
|
||||
|
|
@ -18,6 +21,7 @@ describe("Postgres Generate CRUD with JSON Form", () => {
|
|||
dataSources.CreateDataSource("Postgres");
|
||||
cy.get("@dsName").then(($dsName) => {
|
||||
dsName = $dsName;
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
entityExplorer.AddNewPage();
|
||||
entityExplorer.AddNewPage("Generate page with data");
|
||||
agHelper.GetNClick(dataSources._selectDatasourceDropdown);
|
||||
|
|
@ -49,7 +53,7 @@ describe("Postgres Generate CRUD with JSON Form", () => {
|
|||
//coz if app is published & shared then deleting ds may cause issue, So!
|
||||
cy.get("@dsName").then(($dsName) => {
|
||||
dsName = $dsName;
|
||||
dataSources.DeleteDatasouceFromActiveTab(dsName as string, 409);
|
||||
dataSources.DeleteDatasourceFromWithinDS(dsName as string, 409);
|
||||
agHelper.WaitUntilAllToastsDisappear();
|
||||
});
|
||||
deployMode.DeployApp(locators._emptyPageTxt);
|
||||
|
|
@ -57,7 +61,7 @@ describe("Postgres Generate CRUD with JSON Form", () => {
|
|||
deployMode.NavigateBacktoEditor();
|
||||
cy.get("@dsName").then(($dsName) => {
|
||||
dsName = $dsName;
|
||||
dataSources.DeleteDatasouceFromActiveTab(dsName as string, 200);
|
||||
dataSources.DeleteDatasourceFromWithinDS(dsName as string, 200);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -57,11 +57,14 @@ describe("Validate Postgres Generate CRUD with JSON Form", () => {
|
|||
//agHelper.VerifyEvaluatedValue(tableCreateQuery); //failing sometimes!
|
||||
|
||||
dataSources.RunQueryNVerifyResponseViews();
|
||||
dataSources.AssertTableInVirtuosoList(dsName, "public.vessels");
|
||||
});
|
||||
|
||||
it("2. Validate Select record from Postgress datasource & verify query response", () => {
|
||||
entityExplorer.ActionTemplateMenuByEntityName("public.vessels", "Select");
|
||||
dataSources.createQueryWithDatasourceSchemaTemplate(
|
||||
dsName,
|
||||
"public.vessels",
|
||||
"Select",
|
||||
);
|
||||
dataSources.RunQueryNVerifyResponseViews(10);
|
||||
dataSources.AssertQueryTableResponse(0, "371681");
|
||||
dataSources.AssertQueryTableResponse(6, "Passenger");
|
||||
|
|
|
|||
|
|
@ -73,21 +73,6 @@ describe("Generate New CRUD Page Inside from entity explorer", function () {
|
|||
});
|
||||
|
||||
it("2. Generate CRUD page from datasource ACTIVE section", function () {
|
||||
// cy.NavigateToQueryEditor();
|
||||
// cy.get(pages.integrationActiveTab)
|
||||
// .should("be.visible")
|
||||
// .click({ force: true });
|
||||
// cy.wait(1000);
|
||||
|
||||
// cy.get(datasourceEditor.datasourceCard)
|
||||
// .contains(datasourceName)
|
||||
// .scrollIntoView()
|
||||
// .should("be.visible")
|
||||
// .closest(datasourceEditor.datasourceCard)
|
||||
// .within(() => {
|
||||
// cy.get(datasourceEditor.datasourceCardGeneratePageBtn).click();
|
||||
// });
|
||||
|
||||
cy.NavigateToDSGeneratePage(datasourceName);
|
||||
|
||||
// fetch bucket
|
||||
|
|
|
|||
|
|
@ -9,11 +9,22 @@ import {
|
|||
entityItems,
|
||||
} from "../../../../support/Objects/ObjectsCore";
|
||||
import inputData from "../../../../support/Objects/mySqlData";
|
||||
import EditorNavigation, {
|
||||
SidebarButton,
|
||||
} from "../../../../support/Pages/EditorNavigation";
|
||||
import { featureFlagIntercept } from "../../../../support/Objects/FeatureFlags";
|
||||
|
||||
let dsName: any, query: string;
|
||||
|
||||
describe("MySQL Datatype tests", function () {
|
||||
before("Load dsl, Change theme, Create Mysql DS", () => {
|
||||
featureFlagIntercept(
|
||||
{
|
||||
ab_gsheet_schema_enabled: true,
|
||||
ab_mock_mongo_schema_enabled: true,
|
||||
},
|
||||
false,
|
||||
);
|
||||
agHelper.AddDsl("Datatypes/mySQLdsl");
|
||||
|
||||
appSettings.OpenPaneAndChangeTheme("Moon");
|
||||
|
|
@ -21,6 +32,7 @@ describe("MySQL Datatype tests", function () {
|
|||
cy.get("@dsName").then(($dsName) => {
|
||||
dsName = $dsName;
|
||||
});
|
||||
EditorNavigation.ViaSidebar(SidebarButton.Pages);
|
||||
});
|
||||
|
||||
it("1. Creating mysqlDTs table & queries", () => {
|
||||
|
|
@ -31,10 +43,9 @@ describe("MySQL Datatype tests", function () {
|
|||
dataSources.CreateQueryFromOverlay(dsName, query, "createTable"); //Creating query from EE overlay
|
||||
dataSources.RunQuery();
|
||||
|
||||
dataSources.AssertTableInVirtuosoList(dsName, inputData.tableName);
|
||||
|
||||
//Creating SELECT query
|
||||
entityExplorer.ActionTemplateMenuByEntityName(
|
||||
dataSources.createQueryWithDatasourceSchemaTemplate(
|
||||
dsName,
|
||||
inputData.tableName,
|
||||
"Select",
|
||||
);
|
||||
|
|
@ -46,7 +57,8 @@ describe("MySQL Datatype tests", function () {
|
|||
|
||||
//Other queries
|
||||
query = inputData.query.insertRecord;
|
||||
entityExplorer.ActionTemplateMenuByEntityName(
|
||||
dataSources.createQueryWithDatasourceSchemaTemplate(
|
||||
dsName,
|
||||
inputData.tableName,
|
||||
"Insert",
|
||||
);
|
||||
|
|
@ -54,7 +66,8 @@ describe("MySQL Datatype tests", function () {
|
|||
dataSources.EnterQuery(query);
|
||||
|
||||
query = inputData.query.dropTable;
|
||||
entityExplorer.ActionTemplateMenuByEntityName(
|
||||
dataSources.createQueryWithDatasourceSchemaTemplate(
|
||||
dsName,
|
||||
inputData.tableName,
|
||||
"Delete",
|
||||
);
|
||||
|
|
@ -127,17 +140,7 @@ describe("MySQL Datatype tests", function () {
|
|||
dataSources.RunQuery();
|
||||
dataSources.AssertQueryTableResponse(0, "0"); //Success response for dropped table!
|
||||
entityExplorer.ExpandCollapseEntity("Queries/JS", false);
|
||||
entityExplorer.ExpandCollapseEntity("Datasources");
|
||||
entityExplorer.ExpandCollapseEntity(dsName);
|
||||
entityExplorer.ActionContextMenuByEntityName({
|
||||
entityNameinLeftSidebar: dsName,
|
||||
action: "Refresh",
|
||||
});
|
||||
agHelper.AssertElementAbsence(
|
||||
entityExplorer._entityNameInExplorer(inputData.tableName),
|
||||
);
|
||||
entityExplorer.ExpandCollapseEntity(dsName, false);
|
||||
entityExplorer.ExpandCollapseEntity("Datasources", false);
|
||||
dataSources.AssertTableInVirtuosoList(dsName, inputData.tableName, false);
|
||||
|
||||
//DS deletion
|
||||
dataSources.DeleteDatasourceFromWithinDS(dsName, 409); //Since all queries exists
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user