chore: Release v1.8.12 (#18721)

> Pull Request Template
>
> Use this template to quickly create a well written pull request. Delete all quotes before creating the pull request.

## Description
Release v1.8.12

> Add a TL;DR when description is extra long (helps content team)

Fixes # (issue)
> if no issue exists, please create an issue and ask the maintainers about this first


Media
> A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video


## Type of change

> Please delete options that are not relevant.

- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing functionality to not work as expected)
- This change requires a documentation update


## How Has This Been Tested?
> Please describe the tests that you ran to verify your changes. Provide instructions, so we can reproduce.
> Please also list any relevant details for your test configuration.
> Delete anything that is not important

- Manual
- Jest
- Cypress

### Test Plan
> Add Testsmith test cases links that relate to this PR

### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR)


## Checklist:
### Dev activity
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag


### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or manual QA
- [ ] Organized project review call with relevant stakeholders after Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
This commit is contained in:
Arpit Mohan 2022-12-06 13:32:42 +01:00 committed by GitHub
commit 6d19abf6ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
451 changed files with 13124 additions and 5126 deletions

2
.github/config.json vendored

File diff suppressed because one or more lines are too long

View File

@ -19,7 +19,7 @@ jobs:
Workflow: `${{ github.workflow }}`.
Commit: `${{ github.event.client_payload.slash_command.args.named.sha }}`.
PR: ${{ github.event.client_payload.pull_request.number }}.
Perf tests will be available at <https://app.appsmith.com/app/performance-infra-dashboard/pr-details-63465d4789020c7ac296d08d?pr=${{ github.event.client_payload.pull_request.number }}&runId=${{ github.run_id }}_${{github.run_attempt}}>
Perf tests will be available at <https://app.appsmith.com/app/performance-infra-dashboard/pr-details-638dd7cd2913ba43778b915e?pr=${{ github.event.client_payload.pull_request.number }}&runId=${{ github.run_id }}_${{github.run_attempt}}>
server-build:
name: server-build
@ -245,6 +245,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }}
@ -280,6 +284,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }}
@ -319,6 +327,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }}
@ -375,7 +387,7 @@ jobs:
if: failure()
run: |
cd ${{ github.workspace }}/app/client/cypress/
find screenshots -type d|grep -i spec |sed 's/screenshots/cypress\/integration/g' > ~/failed_spec_fat/failed_spec-${{ matrix.job }}
find screenshots -type d|grep -i spec |sed 's/screenshots/cypress\/integration/g' > ~/failed_spec_fat/failed_spec_fat-${{ matrix.job }}
# Upload failed test list using common path for all matrix job
- name: Upload failed test list artifact
@ -632,6 +644,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }}
@ -665,6 +681,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }}
@ -703,6 +723,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }}

View File

@ -193,6 +193,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID }}

View File

@ -19,7 +19,7 @@ jobs:
Workflow: `${{ github.workflow }}`.
Commit: `${{ github.event.client_payload.slash_command.args.named.sha }}`.
PR: ${{ github.event.client_payload.pull_request.number }}.
Perf tests will be available at <https://app.appsmith.com/app/performance-infra-dashboard/pr-details-63465d4789020c7ac296d08d?pr=${{ github.event.client_payload.pull_request.number }}&runId=${{ github.run_id }}_${{github.run_attempt}}>
Perf tests will be available at <https://app.appsmith.com/app/performance-infra-dashboard/pr-details-638dd7cd2913ba43778b915e?pr=${{ github.event.client_payload.pull_request.number }}&runId=${{ github.run_id }}_${{github.run_attempt}}>
server-build:
name: server-build
uses: ./.github/workflows/server-build.yml

View File

@ -553,6 +553,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID }}
@ -817,6 +821,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }}
@ -852,6 +860,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }}
@ -891,6 +903,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }}
@ -1255,6 +1271,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }}
@ -1288,6 +1308,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }}
@ -1326,6 +1350,10 @@ jobs:
CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }}
CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }}
CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }}
CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }}
CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }}
CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }}
CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }}
CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }}
CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }}

View File

@ -183,20 +183,20 @@ Lets build great software together.
[![ohansFavour](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/46670083?v=4&w=50&h=50&mask=circle)](https://github.com/ohansFavour)
[![Aishwarya-U-R](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/91450662?v=4&w=50&h=50&mask=circle)](https://github.com/Aishwarya-U-R)
[![Irongade](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/37867493?v=4&w=50&h=50&mask=circle)](https://github.com/Irongade)
[![ankitakinger](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/28362912?v=4&w=50&h=50&mask=circle)](https://github.com/ankitakinger)
[![prsidhu](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/5424788?v=4&w=50&h=50&mask=circle)](https://github.com/prsidhu)
[![pranavkanade](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/13262095?v=4&w=50&h=50&mask=circle)](https://github.com/pranavkanade)
[![somangshu](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/11089579?v=4&w=50&h=50&mask=circle)](https://github.com/somangshu)
[![ankitakinger](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/28362912?v=4&w=50&h=50&mask=circle)](https://github.com/ankitakinger)
[![ApekshaBhosale](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/7846888?v=4&w=50&h=50&mask=circle)](https://github.com/ApekshaBhosale)
[![yatinappsmith](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/84702014?v=4&w=50&h=50&mask=circle)](https://github.com/yatinappsmith)
[![sidhantgoel](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/3933675?v=4&w=50&h=50&mask=circle)](https://github.com/sidhantgoel)
[![SatishGandham](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/441914?v=4&w=50&h=50&mask=circle)](https://github.com/SatishGandham)
[![yatinappsmith](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/84702014?v=4&w=50&h=50&mask=circle)](https://github.com/yatinappsmith)
[![rahulramesha](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/71900764?v=4&w=50&h=50&mask=circle)](https://github.com/rahulramesha)
[![IAmAnubhavSaini](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/1573771?v=4&w=50&h=50&mask=circle)](https://github.com/IAmAnubhavSaini)
[![marks0351](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/35134347?v=4&w=50&h=50&mask=circle)](https://github.com/marks0351)
[![albinAppsmith](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/87797149?v=4&w=50&h=50&mask=circle)](https://github.com/albinAppsmith)
[![ayushpahwa](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/8526215?v=4&w=50&h=50&mask=circle)](https://github.com/ayushpahwa)
[![Parthvi12](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/80334441?v=4&w=50&h=50&mask=circle)](https://github.com/Parthvi12)
[![ayushpahwa](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/8526215?v=4&w=50&h=50&mask=circle)](https://github.com/ayushpahwa)
[![ashit-rath](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/88306433?v=4&w=50&h=50&mask=circle)](https://github.com/ashit-rath)
[![AmanAgarwal041](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/7565635?v=4&w=50&h=50&mask=circle)](https://github.com/AmanAgarwal041)
[![areyabhishek](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/30255708?v=4&w=50&h=50&mask=circle)](https://github.com/areyabhishek)
@ -206,8 +206,8 @@ Lets build great software together.
[![vishnu-gp](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/9128194?v=4&w=50&h=50&mask=circle)](https://github.com/vishnu-gp)
[![keyurparalkar](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/14138515?v=4&w=50&h=50&mask=circle)](https://github.com/keyurparalkar)
[![vihar](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/16307796?v=4&w=50&h=50&mask=circle)](https://github.com/vihar)
[![ChandanBalajiBP](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/104058110?v=4&w=50&h=50&mask=circle)](https://github.com/ChandanBalajiBP)
[![eco-monk](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/66776129?v=4&w=50&h=50&mask=circle)](https://github.com/eco-monk)
[![ChandanBalajiBP](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/104058110?v=4&w=50&h=50&mask=circle)](https://github.com/ChandanBalajiBP)
[![souma-ghosh](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/103924539?v=4&w=50&h=50&mask=circle)](https://github.com/souma-ghosh)
[![subrata71](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/3524599?v=4&w=50&h=50&mask=circle)](https://github.com/subrata71)
[![dhruvikn](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/22471214?v=4&w=50&h=50&mask=circle)](https://github.com/dhruvikn)
@ -221,13 +221,13 @@ Lets build great software together.
[![Pranay105](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/48308728?v=4&w=50&h=50&mask=circle)](https://github.com/Pranay105)
[![iamrkcheers](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/16760643?v=4&w=50&h=50&mask=circle)](https://github.com/iamrkcheers)
[![vaibh1297](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/40293928?v=4&w=50&h=50&mask=circle)](https://github.com/vaibh1297)
[![ravikp7](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/13567359?v=4&w=50&h=50&mask=circle)](https://github.com/ravikp7)
[![ankitsrivas14](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/67647761?v=4&w=50&h=50&mask=circle)](https://github.com/ankitsrivas14)
[![kocharrahul7](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/20532920?v=4&w=50&h=50&mask=circle)](https://github.com/kocharrahul7)
[![rohitagarwal88](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/890915?v=4&w=50&h=50&mask=circle)](https://github.com/rohitagarwal88)
[![ramsaptami](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/79509062?v=4&w=50&h=50&mask=circle)](https://github.com/ramsaptami)
[![ravikp7](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/13567359?v=4&w=50&h=50&mask=circle)](https://github.com/ravikp7)
[![AS-Laguna](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/101155659?v=4&w=50&h=50&mask=circle)](https://github.com/AS-Laguna)
[![NilanshBansal](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/25542733?v=4&w=50&h=50&mask=circle)](https://github.com/NilanshBansal)
[![AS-Laguna](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/101155659?v=4&w=50&h=50&mask=circle)](https://github.com/AS-Laguna)
[![RakshaKShetty](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/45958978?v=4&w=50&h=50&mask=circle)](https://github.com/RakshaKShetty)
[![Rishabhkaul](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/1650391?v=4&w=50&h=50&mask=circle)](https://github.com/Rishabhkaul)
[![rohan-arthur](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/94514895?v=4&w=50&h=50&mask=circle)](https://github.com/rohan-arthur)
@ -255,7 +255,7 @@ Lets build great software together.
[![Vidushi-Gupta](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/55969597?v=4&w=50&h=50&mask=circle)](https://github.com/Vidushi-Gupta)
[![aakashDesign](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/65771350?v=4&w=50&h=50&mask=circle)](https://github.com/aakashDesign)
[![appsmith-bot](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/74705725?v=4&w=50&h=50&mask=circle)](https://github.com/appsmith-bot)
[![shastryblr](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/79321954?v=4&w=50&h=50&mask=circle)](https://github.com/shastryblr)
[![shastry-gg](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/79321954?v=4&w=50&h=50&mask=circle)](https://github.com/shastry-gg)
[![AnandiKulkarni](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/80756091?v=4&w=50&h=50&mask=circle)](https://github.com/AnandiKulkarni)
[![momcilo-appsmith](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/81744497?v=4&w=50&h=50&mask=circle)](https://github.com/momcilo-appsmith)
[![shwetha-ramesh](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/92293815?v=4&w=50&h=50&mask=circle)](https://github.com/shwetha-ramesh)
@ -409,7 +409,7 @@ Lets build great software together.
[![zimkjh](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/31986639?v=4&w=50&h=50&mask=circle)](https://github.com/zimkjh)
[![kyteinsky](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/20724224?v=4&w=50&h=50&mask=circle)](https://github.com/kyteinsky)
[![lifeneedspassion](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/7675485?v=4&w=50&h=50&mask=circle)](https://github.com/lifeneedspassion)
[![geek-nupur](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/35266222?v=4&w=50&h=50&mask=circle)](https://github.com/geek-nupur)
[![nupur-singhal1992](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/35266222?v=4&w=50&h=50&mask=circle)](https://github.com/nupur-singhal1992)
[![nzidol](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/13618973?v=4&w=50&h=50&mask=circle)](https://github.com/nzidol)
[![onifs10](https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/48095055?v=4&w=50&h=50&mask=circle)](https://github.com/onifs10)

View File

@ -0,0 +1,157 @@
{
"dsl": {
"widgetName": "MainContainer",
"backgroundColor": "none",
"rightColumn": 4896,
"snapColumns": 64,
"detachFromLayout": true,
"widgetId": "0",
"topRow": 0,
"bottomRow": 490,
"containerStyle": "none",
"snapRows": 125,
"parentRowSpace": 1,
"type": "CANVAS_WIDGET",
"canExtend": true,
"version": 69,
"minHeight": 1292,
"dynamicTriggerPathList": [],
"parentColumnSpace": 1,
"dynamicBindingPathList": [],
"leftColumn": 0,
"children": [
{
"isVisible": true,
"backgroundColor": "#FFFFFF",
"widgetName": "Container1",
"containerStyle": "card",
"borderColor": "#E0DEDE",
"borderWidth": "1",
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"animateLoading": true,
"children": [
{
"isVisible": true,
"widgetName": "Canvas1",
"version": 1,
"detachFromLayout": true,
"type": "CANVAS_WIDGET",
"hideCard": true,
"isDeprecated": false,
"displayName": "Canvas",
"key": "v2o6lv3nzy",
"containerStyle": "none",
"canExtend": false,
"children": [
{
"isVisible": true,
"animateLoading": true,
"text": "Submit",
"buttonVariant": "PRIMARY",
"placement": "CENTER",
"widgetName": "Button1",
"isDisabled": false,
"isDefaultClickDisabled": true,
"disabledWhenInvalid": false,
"resetFormOnClick": false,
"recaptchaType": "V3",
"version": 1,
"searchTags": [
"click",
"submit"
],
"type": "BUTTON_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Button",
"key": "314dya6t5f",
"iconSVG": "/static/media/icon.cca026338f1c8eb6df8ba03d084c2fca.svg",
"widgetId": "ky4p2dinmv",
"renderMode": "CANVAS",
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none",
"isLoading": false,
"parentColumnSpace": 3.42578125,
"parentRowSpace": 10,
"leftColumn": 19,
"rightColumn": 35,
"topRow": 29,
"bottomRow": 33,
"parentId": "3dktwb98ur",
"dynamicBindingPathList": [
{
"key": "buttonColor"
},
{
"key": "borderRadius"
}
]
}
],
"minHeight": 350,
"widgetId": "3dktwb98ur",
"renderMode": "CANVAS",
"boxShadow": "none",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
"isLoading": false,
"parentColumnSpace": 1,
"parentRowSpace": 1,
"leftColumn": 0,
"rightColumn": 239.25,
"topRow": 0,
"bottomRow": 350,
"parentId": "vu6m5e6y57",
"dynamicBindingPathList": [
{
"key": "borderRadius"
},
{
"key": "accentColor"
}
]
}
],
"version": 1,
"minDynamicHeight": 10,
"maxDynamicHeight": 9000,
"dynamicHeight": "AUTO_HEIGHT",
"shouldScrollContents": true,
"searchTags": [
"div",
"parent",
"group"
],
"type": "CONTAINER_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Container",
"key": "48gjvjaig3",
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
"isCanvas": true,
"widgetId": "vu6m5e6y57",
"renderMode": "CANVAS",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"parentColumnSpace": 9.96875,
"parentRowSpace": 10,
"leftColumn": 17,
"rightColumn": 41,
"topRow": 6,
"bottomRow": 41,
"parentId": "0",
"dynamicBindingPathList": [
{
"key": "borderRadius"
},
{
"key": "boxShadow"
}
],
"originalTopRow": 6,
"originalBottomRow": 16
}
]
}
}

View File

@ -0,0 +1,302 @@
{
"dsl": {
"widgetName": "MainContainer",
"backgroundColor": "none",
"rightColumn": 4896,
"snapColumns": 64,
"detachFromLayout": true,
"widgetId": "0",
"topRow": 0,
"bottomRow": 460,
"containerStyle": "none",
"snapRows": 125,
"parentRowSpace": 1,
"type": "CANVAS_WIDGET",
"canExtend": true,
"version": 69,
"minHeight": 1292,
"dynamicTriggerPathList": [],
"parentColumnSpace": 1,
"dynamicBindingPathList": [],
"leftColumn": 0,
"children": [
{
"isVisible": true,
"backgroundColor": "#FFFFFF",
"widgetName": "Container1",
"containerStyle": "card",
"borderColor": "#E0DEDE",
"borderWidth": "1",
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"animateLoading": true,
"children": [
{
"isVisible": true,
"widgetName": "Canvas1",
"version": 1,
"detachFromLayout": true,
"type": "CANVAS_WIDGET",
"hideCard": true,
"isDeprecated": false,
"displayName": "Canvas",
"key": "1bw00vqtdm",
"containerStyle": "none",
"canExtend": false,
"children": [
{
"isVisible": true,
"backgroundColor": "#FFFFFF",
"widgetName": "Container2",
"containerStyle": "card",
"borderColor": "#E0DEDE",
"borderWidth": "1",
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"animateLoading": true,
"children": [
{
"isVisible": true,
"widgetName": "Canvas2",
"version": 1,
"detachFromLayout": true,
"type": "CANVAS_WIDGET",
"hideCard": true,
"isDeprecated": false,
"displayName": "Canvas",
"key": "1bw00vqtdm",
"containerStyle": "none",
"canExtend": false,
"children": [],
"minHeight": 100,
"widgetId": "s1a0qnthhm",
"renderMode": "CANVAS",
"isLoading": false,
"parentColumnSpace": 1,
"parentRowSpace": 1,
"leftColumn": 0,
"rightColumn": 138.29296875,
"topRow": 0,
"bottomRow": 100,
"parentId": "1ioppex86e",
"dynamicBindingPathList": []
}
],
"version": 1,
"minDynamicHeight": 10,
"maxDynamicHeight": 9000,
"dynamicHeight": "AUTO_HEIGHT",
"shouldScrollContents": true,
"searchTags": [
"div",
"parent",
"group"
],
"type": "CONTAINER_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Container",
"key": "pjyxbucclq",
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
"isCanvas": true,
"widgetId": "1ioppex86e",
"renderMode": "CANVAS",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"parentColumnSpace": 5.76220703125,
"parentRowSpace": 10,
"leftColumn": 19,
"rightColumn": 43,
"topRow": 1,
"bottomRow": 11,
"parentId": "7cshqwb2zr",
"dynamicBindingPathList": [
{
"key": "borderRadius"
},
{
"key": "boxShadow"
}
]
},
{
"isVisible": true,
"backgroundColor": "#FFFFFF",
"widgetName": "Container3",
"containerStyle": "card",
"borderColor": "#E0DEDE",
"borderWidth": "1",
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"animateLoading": true,
"children": [
{
"isVisible": true,
"widgetName": "Canvas3",
"version": 1,
"detachFromLayout": true,
"type": "CANVAS_WIDGET",
"hideCard": true,
"isDeprecated": false,
"displayName": "Canvas",
"key": "1bw00vqtdm",
"containerStyle": "none",
"canExtend": false,
"children": [],
"minHeight": 100,
"widgetId": "g38egg6jl0",
"renderMode": "CANVAS",
"isLoading": false,
"parentColumnSpace": 1,
"parentRowSpace": 1,
"leftColumn": 0,
"rightColumn": 138.29296875,
"topRow": 0,
"bottomRow": 100,
"parentId": "b9oq4d1he7",
"dynamicBindingPathList": []
}
],
"version": 1,
"minDynamicHeight": 10,
"maxDynamicHeight": 9000,
"dynamicHeight": "AUTO_HEIGHT",
"shouldScrollContents": true,
"searchTags": [
"div",
"parent",
"group"
],
"type": "CONTAINER_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Container",
"key": "pjyxbucclq",
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
"isCanvas": true,
"widgetId": "b9oq4d1he7",
"renderMode": "CANVAS",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"parentColumnSpace": 5.76220703125,
"parentRowSpace": 10,
"leftColumn": 19,
"rightColumn": 43,
"topRow": 17,
"bottomRow": 27,
"parentId": "7cshqwb2zr",
"dynamicBindingPathList": [
{
"key": "borderRadius"
},
{
"key": "boxShadow"
}
]
},
{
"isVisible": true,
"text": "Label",
"fontSize": "1rem",
"fontStyle": "BOLD",
"textAlign": "LEFT",
"textColor": "#231F20",
"widgetName": "Text1",
"shouldTruncate": false,
"overflow": "NONE",
"version": 1,
"animateLoading": true,
"minDynamicHeight": 4,
"maxDynamicHeight": 9000,
"dynamicHeight": "AUTO_HEIGHT",
"searchTags": [
"typography",
"paragraph",
"label"
],
"type": "TEXT_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Text",
"key": "sypv6avexm",
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
"widgetId": "bbxx87ygze",
"renderMode": "CANVAS",
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"parentColumnSpace": 5.76220703125,
"parentRowSpace": 10,
"leftColumn": 23,
"rightColumn": 39,
"topRow": 12,
"bottomRow": 16,
"parentId": "7cshqwb2zr",
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
]
}
],
"minHeight": 290,
"widgetId": "7cshqwb2zr",
"renderMode": "CANVAS",
"isLoading": false,
"parentColumnSpace": 1,
"parentRowSpace": 1,
"leftColumn": 0,
"rightColumn": 239.25,
"topRow": 0,
"bottomRow": 290,
"parentId": "ngknct6sch",
"dynamicBindingPathList": []
}
],
"version": 1,
"minDynamicHeight": 10,
"maxDynamicHeight": 9000,
"dynamicHeight": "AUTO_HEIGHT",
"shouldScrollContents": true,
"searchTags": [
"div",
"parent",
"group"
],
"type": "CONTAINER_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Container",
"key": "pjyxbucclq",
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
"isCanvas": true,
"widgetId": "ngknct6sch",
"renderMode": "CANVAS",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"parentColumnSpace": 9.96875,
"parentRowSpace": 10,
"leftColumn": 13,
"rightColumn": 52,
"topRow": 6,
"bottomRow": 35,
"parentId": "0",
"dynamicBindingPathList": [
{
"key": "borderRadius"
},
{
"key": "boxShadow"
}
],
"originalBottomRow": 51,
"originalTopRow": 6,
"dynamicTriggerPathList": []
}
]
}
}

View File

@ -0,0 +1,165 @@
{
"dsl": {
"widgetName": "MainContainer",
"backgroundColor": "none",
"rightColumn": 4896,
"snapColumns": 64,
"detachFromLayout": true,
"widgetId": "0",
"topRow": 0,
"bottomRow": 460,
"containerStyle": "none",
"snapRows": 125,
"parentRowSpace": 1,
"type": "CANVAS_WIDGET",
"canExtend": true,
"version": 69,
"minHeight": 1292,
"dynamicTriggerPathList": [],
"parentColumnSpace": 1,
"dynamicBindingPathList": [],
"leftColumn": 0,
"children": [
{
"isVisible": true,
"backgroundColor": "#FFFFFF",
"widgetName": "Container1",
"containerStyle": "card",
"borderColor": "#E0DEDE",
"borderWidth": "1",
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"animateLoading": true,
"children": [
{
"isVisible": true,
"widgetName": "Canvas1",
"version": 1,
"detachFromLayout": true,
"type": "CANVAS_WIDGET",
"hideCard": true,
"isDeprecated": false,
"displayName": "Canvas",
"key": "pbbivorh4u",
"containerStyle": "none",
"canExtend": false,
"children": [
{
"isVisible": true,
"text": "Cypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenariosCypress Test scenarios",
"fontSize": "1rem",
"fontStyle": "BOLD",
"textAlign": "LEFT",
"textColor": "#231F20",
"widgetName": "Text1",
"shouldTruncate": false,
"overflow": "NONE",
"version": 1,
"animateLoading": true,
"minDynamicHeight": 4,
"maxDynamicHeight": 9000,
"dynamicHeight": "AUTO_HEIGHT",
"searchTags": [
"typography",
"paragraph",
"label"
],
"type": "TEXT_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Text",
"key": "qz9rm4m6mt",
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
"widgetId": "cvjp04zqa6",
"renderMode": "CANVAS",
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"parentColumnSpace": 3.42578125,
"parentRowSpace": 10,
"leftColumn": 18,
"rightColumn": 34,
"topRow": 2,
"bottomRow": 143,
"parentId": "y2r0w8mmas",
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
],
"dynamicTriggerPathList": [],
"originalTopRow": 2,
"originalBottomRow": 6
}
],
"minHeight": 1450,
"widgetId": "y2r0w8mmas",
"renderMode": "CANVAS",
"boxShadow": "none",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
"isLoading": false,
"parentColumnSpace": 1,
"parentRowSpace": 1,
"leftColumn": 0,
"rightColumn": 239.25,
"topRow": 0,
"bottomRow": 1450,
"parentId": "uls70b9gd6",
"dynamicBindingPathList": [
{
"key": "borderRadius"
},
{
"key": "accentColor"
}
]
}
],
"version": 1,
"minDynamicHeight": 10,
"maxDynamicHeight": 9000,
"dynamicHeight": "FIXED",
"shouldScrollContents": true,
"searchTags": [
"div",
"parent",
"group"
],
"type": "CONTAINER_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Container",
"key": "vkaake96j7",
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
"isCanvas": true,
"widgetId": "uls70b9gd6",
"renderMode": "CANVAS",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"parentColumnSpace": 9.96875,
"parentRowSpace": 10,
"leftColumn": 17,
"rightColumn": 41,
"topRow": 8,
"bottomRow": 18,
"parentId": "0",
"dynamicBindingPathList": [
{
"key": "borderRadius"
},
{
"key": "boxShadow"
}
],
"dynamicTriggerPathList": []
}
]
}
}

View File

@ -0,0 +1,634 @@
{
"dsl": {
"widgetName": "MainContainer",
"backgroundColor": "none",
"rightColumn": 4896,
"snapColumns": 64,
"detachFromLayout": true,
"widgetId": "0",
"topRow": 0,
"bottomRow": 500,
"containerStyle": "none",
"snapRows": 125,
"parentRowSpace": 1,
"type": "CANVAS_WIDGET",
"canExtend": true,
"version": 69,
"minHeight": 1292,
"dynamicTriggerPathList": [],
"parentColumnSpace": 1,
"dynamicBindingPathList": [],
"leftColumn": 0,
"children": [
{
"isVisible": true,
"backgroundColor": "transparent",
"itemBackgroundColor": "#FFFFFF",
"animateLoading": true,
"gridType": "vertical",
"template": {
"Image1": {
"isVisible": true,
"defaultImage": "https://assets.appsmith.com/widgets/default.png",
"imageShape": "RECTANGLE",
"maxZoomLevel": 1,
"enableRotation": false,
"enableDownload": false,
"objectFit": "cover",
"image": "{{List1.listData.map((currentItem) => currentItem.img)}}",
"widgetName": "Image1",
"version": 1,
"animateLoading": true,
"type": "IMAGE_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Image",
"key": "nqfe0za35m",
"iconSVG": "/static/media/icon.52d8fb963abcb95c79b10f1553389f22.svg",
"boxShadow": "none",
"dynamicBindingPathList": [
{
"key": "image"
},
{
"key": "borderRadius"
}
],
"dynamicTriggerPathList": [],
"widgetId": "xd0fne6182",
"renderMode": "CANVAS",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"leftColumn": 0,
"rightColumn": 16,
"topRow": 0,
"bottomRow": 8,
"parentId": "h9zxkabruq"
},
"Text1": {
"isVisible": true,
"text": "{{List1.listData.map((currentItem) => currentItem.name)}}",
"fontSize": "1rem",
"fontStyle": "BOLD",
"textAlign": "LEFT",
"textColor": "#231F20",
"widgetName": "Text1",
"shouldTruncate": false,
"overflow": "NONE",
"version": 1,
"animateLoading": true,
"minDynamicHeight": 4,
"maxDynamicHeight": 9000,
"dynamicHeight": "AUTO_HEIGHT",
"searchTags": [
"typography",
"paragraph",
"label"
],
"type": "TEXT_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Text",
"key": "7iypzmkb0n",
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
"textStyle": "HEADING",
"boxShadow": "none",
"dynamicBindingPathList": [
{
"key": "text"
},
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
],
"dynamicTriggerPathList": [],
"widgetId": "hwtznp2wr7",
"renderMode": "CANVAS",
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"leftColumn": 16,
"rightColumn": 28,
"topRow": 0,
"bottomRow": 4,
"parentId": "h9zxkabruq"
},
"Text2": {
"isVisible": true,
"text": "{{List1.listData.map((currentItem) => currentItem.id)}}",
"fontSize": "1rem",
"fontStyle": "BOLD",
"textAlign": "LEFT",
"textColor": "#231F20",
"widgetName": "Text2",
"shouldTruncate": false,
"overflow": "NONE",
"version": 1,
"animateLoading": true,
"minDynamicHeight": 4,
"maxDynamicHeight": 9000,
"dynamicHeight": "AUTO_HEIGHT",
"searchTags": [
"typography",
"paragraph",
"label"
],
"type": "TEXT_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Text",
"key": "7iypzmkb0n",
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
"textStyle": "BODY",
"boxShadow": "none",
"dynamicBindingPathList": [
{
"key": "text"
},
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
],
"dynamicTriggerPathList": [],
"widgetId": "f5yqkzcdvk",
"renderMode": "CANVAS",
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"leftColumn": 16,
"rightColumn": 24,
"topRow": 4,
"bottomRow": 8,
"parentId": "h9zxkabruq"
}
},
"enhancements": true,
"gridGap": 0,
"listData": [
{
"id": "001",
"name": "Blue",
"img": "https://assets.appsmith.com/widgets/default.png"
},
{
"id": "002",
"name": "Green",
"img": "https://assets.appsmith.com/widgets/default.png"
},
{
"id": "003",
"name": "Red",
"img": "https://assets.appsmith.com/widgets/default.png"
}
],
"widgetName": "List1",
"children": [
{
"isVisible": true,
"widgetName": "Canvas1",
"version": 1,
"detachFromLayout": true,
"type": "CANVAS_WIDGET",
"hideCard": true,
"isDeprecated": false,
"displayName": "Canvas",
"key": "aon95urj2w",
"containerStyle": "none",
"canExtend": false,
"dropDisabled": true,
"openParentPropertyPane": true,
"noPad": true,
"children": [
{
"isVisible": true,
"backgroundColor": "white",
"widgetName": "Container1",
"containerStyle": "card",
"borderColor": "#E0DEDE",
"borderWidth": "1",
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"animateLoading": true,
"children": [
{
"isVisible": true,
"widgetName": "Canvas2",
"version": 1,
"detachFromLayout": true,
"type": "CANVAS_WIDGET",
"hideCard": true,
"isDeprecated": false,
"displayName": "Canvas",
"key": "aon95urj2w",
"containerStyle": "none",
"canExtend": false,
"children": [
{
"isVisible": true,
"defaultImage": "https://assets.appsmith.com/widgets/default.png",
"imageShape": "RECTANGLE",
"maxZoomLevel": 1,
"enableRotation": false,
"enableDownload": false,
"objectFit": "cover",
"image": "{{currentItem.img}}",
"widgetName": "Image1",
"version": 1,
"animateLoading": true,
"type": "IMAGE_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Image",
"key": "nqfe0za35m",
"iconSVG": "/static/media/icon.52d8fb963abcb95c79b10f1553389f22.svg",
"boxShadow": "none",
"dynamicBindingPathList": [
{
"key": "image"
},
{
"key": "borderRadius"
}
],
"dynamicTriggerPathList": [],
"widgetId": "xd0fne6182",
"renderMode": "CANVAS",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"leftColumn": 0,
"rightColumn": 16,
"topRow": 0,
"bottomRow": 8,
"parentId": "h9zxkabruq",
"logBlackList": {
"isVisible": true,
"defaultImage": true,
"imageShape": true,
"maxZoomLevel": true,
"enableRotation": true,
"enableDownload": true,
"objectFit": true,
"image": true,
"widgetName": true,
"version": true,
"animateLoading": true,
"searchTags": true,
"type": true,
"hideCard": true,
"isDeprecated": true,
"replacement": true,
"displayName": true,
"key": true,
"iconSVG": true,
"isCanvas": true,
"boxShadow": true,
"dynamicBindingPathList": true,
"dynamicTriggerPathList": true,
"minHeight": true,
"widgetId": true,
"renderMode": true,
"borderRadius": true,
"isLoading": true,
"parentColumnSpace": true,
"parentRowSpace": true,
"leftColumn": true,
"rightColumn": true,
"topRow": true,
"bottomRow": true,
"parentId": true
}
},
{
"isVisible": true,
"text": "{{currentItem.name}}",
"fontSize": "1rem",
"fontStyle": "BOLD",
"textAlign": "LEFT",
"textColor": "#231F20",
"widgetName": "Text1",
"shouldTruncate": false,
"overflow": "NONE",
"version": 1,
"animateLoading": true,
"minDynamicHeight": 4,
"maxDynamicHeight": 9000,
"dynamicHeight": "AUTO_HEIGHT",
"searchTags": [
"typography",
"paragraph",
"label"
],
"type": "TEXT_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Text",
"key": "7iypzmkb0n",
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
"textStyle": "HEADING",
"boxShadow": "none",
"dynamicBindingPathList": [
{
"key": "text"
},
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
],
"dynamicTriggerPathList": [],
"widgetId": "hwtznp2wr7",
"renderMode": "CANVAS",
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"leftColumn": 16,
"rightColumn": 28,
"topRow": 0,
"bottomRow": 5,
"parentId": "h9zxkabruq",
"logBlackList": {
"isVisible": true,
"text": true,
"fontSize": true,
"fontStyle": true,
"textAlign": true,
"textColor": true,
"widgetName": true,
"shouldTruncate": true,
"overflow": true,
"version": true,
"animateLoading": true,
"minDynamicHeight": true,
"maxDynamicHeight": true,
"dynamicHeight": true,
"searchTags": true,
"type": true,
"hideCard": true,
"isDeprecated": true,
"replacement": true,
"displayName": true,
"key": true,
"iconSVG": true,
"isCanvas": true,
"textStyle": true,
"boxShadow": true,
"dynamicBindingPathList": true,
"dynamicTriggerPathList": true,
"minHeight": true,
"widgetId": true,
"renderMode": true,
"truncateButtonColor": true,
"fontFamily": true,
"borderRadius": true,
"isLoading": true,
"parentColumnSpace": true,
"parentRowSpace": true,
"leftColumn": true,
"rightColumn": true,
"topRow": true,
"bottomRow": true,
"parentId": true
},
"originalTopRow": 0,
"originalBottomRow": 4
},
{
"isVisible": true,
"text": "{{currentItem.id}}",
"fontSize": "1rem",
"fontStyle": "BOLD",
"textAlign": "LEFT",
"textColor": "#231F20",
"widgetName": "Text2",
"shouldTruncate": false,
"overflow": "NONE",
"version": 1,
"animateLoading": true,
"minDynamicHeight": 4,
"maxDynamicHeight": 9000,
"dynamicHeight": "AUTO_HEIGHT",
"searchTags": [
"typography",
"paragraph",
"label"
],
"type": "TEXT_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Text",
"key": "7iypzmkb0n",
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
"textStyle": "BODY",
"boxShadow": "none",
"dynamicBindingPathList": [
{
"key": "text"
},
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
],
"dynamicTriggerPathList": [],
"widgetId": "f5yqkzcdvk",
"renderMode": "CANVAS",
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"leftColumn": 16,
"rightColumn": 24,
"topRow": 5,
"bottomRow": 12,
"parentId": "h9zxkabruq",
"logBlackList": {
"isVisible": true,
"text": true,
"fontSize": true,
"fontStyle": true,
"textAlign": true,
"textColor": true,
"widgetName": true,
"shouldTruncate": true,
"overflow": true,
"version": true,
"animateLoading": true,
"minDynamicHeight": true,
"maxDynamicHeight": true,
"dynamicHeight": true,
"searchTags": true,
"type": true,
"hideCard": true,
"isDeprecated": true,
"replacement": true,
"displayName": true,
"key": true,
"iconSVG": true,
"isCanvas": true,
"textStyle": true,
"boxShadow": true,
"dynamicBindingPathList": true,
"dynamicTriggerPathList": true,
"minHeight": true,
"widgetId": true,
"renderMode": true,
"truncateButtonColor": true,
"fontFamily": true,
"borderRadius": true,
"isLoading": true,
"parentColumnSpace": true,
"parentRowSpace": true,
"leftColumn": true,
"rightColumn": true,
"topRow": true,
"bottomRow": true,
"parentId": true
},
"originalTopRow": 4,
"originalBottomRow": 8
}
],
"minHeight": 140,
"widgetId": "h9zxkabruq",
"renderMode": "CANVAS",
"isLoading": false,
"parentColumnSpace": 1,
"parentRowSpace": 1,
"leftColumn": 0,
"rightColumn": null,
"topRow": 0,
"bottomRow": 140,
"parentId": "z1hyon6hsf",
"dynamicBindingPathList": []
}
],
"version": 1,
"minDynamicHeight": 10,
"maxDynamicHeight": 9000,
"dynamicHeight": "FIXED",
"shouldScrollContents": true,
"searchTags": [
"div",
"parent",
"group"
],
"type": "CONTAINER_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Container",
"key": "bavx5ucxfq",
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
"isCanvas": true,
"dragDisabled": true,
"isDeletable": false,
"disallowCopy": true,
"disablePropertyPane": true,
"disabledWidgetFeatures": [
"dynamicHeight"
],
"openParentPropertyPane": true,
"widgetId": "z1hyon6hsf",
"renderMode": "CANVAS",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"leftColumn": 0,
"rightColumn": 64,
"topRow": 0,
"bottomRow": 12,
"parentId": "0f7mv88r94",
"dynamicBindingPathList": [
{
"key": "borderRadius"
},
{
"key": "boxShadow"
}
]
}
],
"minHeight": 400,
"widgetId": "0f7mv88r94",
"renderMode": "CANVAS",
"isLoading": false,
"parentColumnSpace": 1,
"parentRowSpace": 1,
"leftColumn": 0,
"rightColumn": 239.25,
"topRow": 0,
"bottomRow": 400,
"parentId": "goeipfim43",
"dynamicBindingPathList": []
}
],
"type": "LIST_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "List",
"key": "ygfubplth9",
"iconSVG": "/static/media/icon.9925ee17dee37bf1ba7374412563a8a7.svg",
"isCanvas": true,
"widgetId": "goeipfim43",
"renderMode": "CANVAS",
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"isLoading": false,
"parentColumnSpace": 9.96875,
"parentRowSpace": 10,
"leftColumn": 18,
"rightColumn": 42,
"topRow": 2,
"bottomRow": 42,
"parentId": "0",
"dynamicBindingPathList": [
{
"key": "accentColor"
},
{
"key": "borderRadius"
},
{
"key": "boxShadow"
},
{
"key": "template.Image1.image"
},
{
"key": "template.Text1.text"
},
{
"key": "template.Text2.text"
}
],
"privateWidgets": {
"undefined": true
},
"dynamicTriggerPathList": []
}
]
}
}

View File

@ -0,0 +1,262 @@
{
"dsl": {
"widgetName": "MainContainer",
"backgroundColor": "none",
"rightColumn": 4896,
"snapColumns": 64,
"detachFromLayout": true,
"widgetId": "0",
"topRow": 0,
"bottomRow": 770,
"containerStyle": "none",
"snapRows": 125,
"parentRowSpace": 1,
"type": "CANVAS_WIDGET",
"canExtend": true,
"version": 69,
"minHeight": 1292,
"dynamicTriggerPathList": [],
"parentColumnSpace": 1,
"dynamicBindingPathList": [],
"leftColumn": 0,
"children": [
{
"isVisible": true,
"backgroundColor": "#FFFFFF",
"widgetName": "Container1",
"containerStyle": "card",
"borderColor": "#E0DEDE",
"borderWidth": "1",
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"animateLoading": true,
"children": [
{
"isVisible": true,
"widgetName": "Canvas1",
"version": 1,
"detachFromLayout": true,
"type": "CANVAS_WIDGET",
"hideCard": true,
"isDeprecated": false,
"displayName": "Canvas",
"key": "1bw00vqtdm",
"containerStyle": "none",
"canExtend": false,
"children": [
{
"isVisible": true,
"animateLoading": true,
"text": "Submit",
"buttonVariant": "PRIMARY",
"placement": "CENTER",
"widgetName": "Button1",
"isDisabled": false,
"isDefaultClickDisabled": true,
"disabledWhenInvalid": false,
"resetFormOnClick": false,
"recaptchaType": "V3",
"version": 1,
"searchTags": [
"click",
"submit"
],
"type": "BUTTON_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Button",
"key": "77f9o47k5s",
"iconSVG": "/static/media/icon.cca026338f1c8eb6df8ba03d084c2fca.svg",
"widgetId": "7dmmow3lvk",
"renderMode": "CANVAS",
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none",
"isLoading": false,
"parentColumnSpace": 6.2294921875,
"parentRowSpace": 10,
"leftColumn": 4,
"rightColumn": 20,
"topRow": 2,
"bottomRow": 6,
"parentId": "61o8l6p2l0",
"dynamicBindingPathList": [
{
"key": "buttonColor"
},
{
"key": "borderRadius"
}
]
},
{
"isVisible": true,
"animateLoading": true,
"labelTextSize": "0.875rem",
"options": [
{
"label": "Blue",
"value": "BLUE"
},
{
"label": "Green",
"value": "GREEN"
},
{
"label": "Red",
"value": "RED"
}
],
"defaultSelectedValues": [
"BLUE"
],
"isDisabled": false,
"isInline": true,
"isRequired": false,
"labelText": "Label",
"labelPosition": "Top",
"labelAlignment": "left",
"labelWidth": 5,
"widgetName": "CheckboxGroup1",
"version": 2,
"minDynamicHeight": 4,
"maxDynamicHeight": 9000,
"dynamicHeight": "FIXED",
"type": "CHECKBOX_GROUP_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Checkbox Group",
"key": "x8dy31j5ec",
"iconSVG": "/static/media/icon.ecb3847950c4515966ef642a32758afb.svg",
"widgetId": "i2fyf6un9j",
"renderMode": "CANVAS",
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"parentColumnSpace": 6.2294921875,
"parentRowSpace": 10,
"leftColumn": 31,
"rightColumn": 54,
"topRow": 6,
"bottomRow": 19,
"parentId": "61o8l6p2l0",
"dynamicBindingPathList": [
{
"key": "accentColor"
},
{
"key": "borderRadius"
}
],
"dynamicTriggerPathList": []
},
{
"isVisible": true,
"label": "Label",
"labelPosition": "Top",
"labelAlignment": "left",
"labelTextSize": "0.875rem",
"labelWidth": 5,
"widgetName": "Input1",
"version": 2,
"defaultText": "",
"iconAlign": "left",
"autoFocus": false,
"labelStyle": "",
"resetOnSubmit": true,
"isRequired": false,
"isDisabled": false,
"animateLoading": true,
"inputType": "TEXT",
"minDynamicHeight": 4,
"maxDynamicHeight": 9000,
"dynamicHeight": "FIXED",
"searchTags": [
"form",
"text input",
"number",
"textarea"
],
"type": "INPUT_WIDGET_V2",
"hideCard": false,
"isDeprecated": false,
"displayName": "Input",
"key": "0okusukhfu",
"iconSVG": "/static/media/icon.9f505595da61a34f563dba82adeb06ec.svg",
"widgetId": "6nk2crlol3",
"renderMode": "CANVAS",
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none",
"isLoading": false,
"parentColumnSpace": 6.2294921875,
"parentRowSpace": 10,
"leftColumn": 13,
"rightColumn": 33,
"topRow": 21,
"bottomRow": 28,
"parentId": "61o8l6p2l0",
"dynamicBindingPathList": [
{
"key": "accentColor"
},
{
"key": "borderRadius"
}
]
}
],
"minHeight": 660,
"widgetId": "61o8l6p2l0",
"renderMode": "CANVAS",
"isLoading": false,
"parentColumnSpace": 1,
"parentRowSpace": 1,
"leftColumn": 0,
"rightColumn": 239.25,
"topRow": 0,
"bottomRow": 660,
"parentId": "14i1g95bi0",
"dynamicBindingPathList": []
}
],
"version": 1,
"minDynamicHeight": 10,
"maxDynamicHeight": 9000,
"dynamicHeight": "FIXED",
"shouldScrollContents": true,
"searchTags": [
"div",
"parent",
"group"
],
"type": "CONTAINER_WIDGET",
"hideCard": false,
"isDeprecated": false,
"displayName": "Container",
"key": "pjyxbucclq",
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
"isCanvas": true,
"widgetId": "14i1g95bi0",
"renderMode": "CANVAS",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"isLoading": false,
"parentColumnSpace": 9.96875,
"parentRowSpace": 10,
"leftColumn": 16,
"rightColumn": 58,
"topRow": 3,
"bottomRow": 69,
"parentId": "0",
"dynamicBindingPathList": [
{
"key": "borderRadius"
},
{
"key": "boxShadow"
}
],
"dynamicTriggerPathList": []
}
]
}
}

View File

@ -300,6 +300,29 @@
"img": "http://www.serebii.net/pokemongo/pokemon/006.png"
}
],
"MenuButtonSourceData": [
{
"id": 1,
"email": "michael.lawson@reqres.in",
"first_name": "Michael",
"last_name": "Lawson",
"avatar": "https://reqres.in/img/faces/7-image.jpg"
},
{
"id": 2,
"email": "lindsay.ferguson@reqres.in",
"first_name": "Lindsay",
"last_name": "Ferguson",
"avatar": "https://reqres.in/img/faces/8-image.jpg"
},
{
"id": 3,
"email": "brock.lesnar@reqres.in",
"first_name": "Brock",
"last_name": "Lesnar",
"avatar": "https://reqres.in/img/faces/8-image.jpg"
}
],
"TableURLColumnType": [
{
"image": "https://wallpaperaccess.com/full/1376499.jpg",

View File

@ -1,51 +1,50 @@
{
"clientSchemaVersion": 1,
"serverSchemaVersion": 2,
"serverSchemaVersion": 6,
"exportedApplication": {
"name": "app2896",
"name": "app5232",
"isPublic": false,
"pages": [
{
"id": "Page1",
"isDefault": true
}
],
"publishedPages": [
{
"id": "Page1",
"isDefault": true
}
],
"viewMode": false,
"appIsExample": false,
"unreadCommentThreads": 0,
"color": "#F4FFDE",
"icon": "single-person",
"slug": "app2896",
"slug": "app5232",
"evaluationVersion": 2,
"applicationVersion": 2,
"new": true
"isManualUpdate": false,
"deleted": false
},
"datasourceList": [
{
"userPermissions": [
"execute:datasources",
"manage:datasources",
"read:datasources"
],
"gitSyncId": "61c2d94747cda83965fe72b5_61c5822385c0bd4ccf7d171c",
"name": "mockdata",
"pluginId": "postgres-plugin",
"invalids": [
"Missing authentication details."
],
"messages": [],
"isConfigured": false,
"isValid": false,
"new": true
"isAutoGenerated": false,
"deleted": false,
"gitSyncId": "61c2d94747cda83965fe72b5_61c5822385c0bd4ccf7d171c"
}
],
"pageList": [
{
"userPermissions": [
"read:pages",
"manage:pages"
],
"gitSyncId": "61c580d685c0bd4ccf7d1716_61c580d685c0bd4ccf7d1718",
"unpublishedPage": {
"name": "Page1",
"slug": "page1",
"layouts": [
{
"id": "Page1",
"userPermissions": [],
"viewMode": false,
"dsl": {
"widgetName": "MainContainer",
"backgroundColor": "none",
@ -60,13 +59,14 @@
"parentRowSpace": 1,
"type": "CANVAS_WIDGET",
"canExtend": true,
"version": 52,
"version": 65,
"minHeight": 600,
"parentColumnSpace": 1,
"dynamicBindingPathList": [],
"leftColumn": 0,
"children": [
{
"boxShadow": "none",
"widgetName": "Table1",
"defaultPageSize": 0,
"columnOrder": [
@ -92,6 +92,9 @@
},
{
"key": "primaryColumns.schema_name.computedValue"
},
{
"key": "accentColor"
}
],
"leftColumn": 4,
@ -103,7 +106,7 @@
"horizontalAlignment": "LEFT",
"verticalAlignment": "CENTER",
"columnType": "text",
"textSize": "PARAGRAPH",
"textSize": "0.875rem",
"enableFilter": true,
"enableSort": true,
"isVisible": true,
@ -111,15 +114,19 @@
"isCellVisible": true,
"isDerived": false,
"label": "schema_name",
"computedValue": "{{Table1.sanitizedTableData.map((currentRow) => ( currentRow.schema_name))}}"
"computedValue": "{{Table1.sanitizedTableData.map((currentRow) => ( currentRow.schema_name))}}",
"borderRadius": "0px",
"boxShadow": "none"
}
},
"delimiter": ",",
"key": "5ejs55im17",
"derivedColumns": {},
"labelTextSize": "0.875rem",
"rightColumn": 25,
"textSize": "PARAGRAPH",
"textSize": "0.875rem",
"widgetId": "uyyp0qxfdq",
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
"isVisibleFilters": true,
"tableData": "{{get_schema.data}}",
"isVisible": true,
@ -133,6 +140,24 @@
"isLoading": false,
"horizontalAlignment": "LEFT",
"isVisibleSearch": true,
"childStylesheet": {
"button": {
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none"
},
"menuButton": {
"menuColor": "{{appsmith.theme.colors.primaryColor}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none"
},
"iconButton": {
"menuColor": "{{appsmith.theme.colors.primaryColor}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none"
}
},
"borderRadius": "0px",
"isVisiblePagination": true,
"verticalAlignment": "CENTER",
"columnSizeMap": {
@ -142,6 +167,7 @@
}
},
{
"boxShadow": "none",
"widgetName": "Table2",
"defaultPageSize": 0,
"columnOrder": [
@ -179,6 +205,9 @@
},
{
"key": "primaryColumns.id.computedValue"
},
{
"key": "accentColor"
}
],
"leftColumn": 30,
@ -190,7 +219,7 @@
"horizontalAlignment": "LEFT",
"verticalAlignment": "CENTER",
"columnType": "text",
"textSize": "PARAGRAPH",
"textSize": "0.875rem",
"enableFilter": true,
"enableSort": true,
"isVisible": true,
@ -198,7 +227,9 @@
"isCellVisible": true,
"isDerived": false,
"label": "due",
"computedValue": "{{Table2.sanitizedTableData.map((currentRow) => ( currentRow.due))}}"
"computedValue": "{{Table2.sanitizedTableData.map((currentRow) => ( currentRow.due))}}",
"borderRadius": "0px",
"boxShadow": "none"
},
"assignee": {
"index": 1,
@ -207,7 +238,7 @@
"horizontalAlignment": "LEFT",
"verticalAlignment": "CENTER",
"columnType": "text",
"textSize": "PARAGRAPH",
"textSize": "0.875rem",
"enableFilter": true,
"enableSort": true,
"isVisible": true,
@ -215,7 +246,9 @@
"isCellVisible": true,
"isDerived": false,
"label": "assignee",
"computedValue": "{{Table2.sanitizedTableData.map((currentRow) => ( currentRow.assignee))}}"
"computedValue": "{{Table2.sanitizedTableData.map((currentRow) => ( currentRow.assignee))}}",
"borderRadius": "0px",
"boxShadow": "none"
},
"title": {
"index": 2,
@ -224,7 +257,7 @@
"horizontalAlignment": "LEFT",
"verticalAlignment": "CENTER",
"columnType": "text",
"textSize": "PARAGRAPH",
"textSize": "0.875rem",
"enableFilter": true,
"enableSort": true,
"isVisible": true,
@ -232,7 +265,9 @@
"isCellVisible": true,
"isDerived": false,
"label": "title",
"computedValue": "{{Table2.sanitizedTableData.map((currentRow) => ( currentRow.title))}}"
"computedValue": "{{Table2.sanitizedTableData.map((currentRow) => ( currentRow.title))}}",
"borderRadius": "0px",
"boxShadow": "none"
},
"id": {
"index": 4,
@ -241,7 +276,7 @@
"horizontalAlignment": "LEFT",
"verticalAlignment": "CENTER",
"columnType": "text",
"textSize": "PARAGRAPH",
"textSize": "0.875rem",
"enableFilter": true,
"enableSort": true,
"isVisible": true,
@ -249,15 +284,19 @@
"isCellVisible": true,
"isDerived": false,
"label": "id",
"computedValue": "{{Table2.sanitizedTableData.map((currentRow) => ( currentRow.id))}}"
"computedValue": "{{Table2.sanitizedTableData.map((currentRow) => ( currentRow.id))}}",
"borderRadius": "0px",
"boxShadow": "none"
}
},
"delimiter": ",",
"key": "5ejs55im17",
"derivedColumns": {},
"labelTextSize": "0.875rem",
"rightColumn": 61,
"textSize": "PARAGRAPH",
"textSize": "0.875rem",
"widgetId": "r1m4lkt7at",
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
"isVisibleFilters": true,
"tableData": "{{mockApi.data.headers.info}}",
"isVisible": true,
@ -271,6 +310,24 @@
"isLoading": false,
"horizontalAlignment": "LEFT",
"isVisibleSearch": true,
"childStylesheet": {
"button": {
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none"
},
"menuButton": {
"menuColor": "{{appsmith.theme.colors.primaryColor}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none"
},
"iconButton": {
"menuColor": "{{appsmith.theme.colors.primaryColor}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none"
}
},
"borderRadius": "0px",
"isVisiblePagination": true,
"verticalAlignment": "CENTER",
"columnSizeMap": {
@ -281,6 +338,7 @@
}
},
{
"boxShadow": "none",
"widgetName": "Input1",
"displayName": "Input",
"iconSVG": "/static/media/icon.9f505595.svg",
@ -298,15 +356,20 @@
"dynamicBindingPathList": [
{
"key": "defaultText"
},
{
"key": "accentColor"
}
],
"labelStyle": "",
"inputType": "TEXT",
"isDisabled": false,
"key": "t02w4ix9o5",
"labelTextSize": "0.875rem",
"isRequired": false,
"rightColumn": 38,
"widgetId": "9timcor5m5",
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
"isVisible": true,
"label": "",
"allowCurrencyChange": false,
@ -314,6 +377,7 @@
"parentId": "0",
"renderMode": "CANVAS",
"isLoading": false,
"borderRadius": "0px",
"iconAlign": "left",
"defaultText": "{{JSObject1.myVar1}}"
}
@ -324,6 +388,7 @@
{
"id": "Page1_get_schema",
"name": "get_schema",
"confirmBeforeExecute": false,
"pluginType": "DB",
"jsonPathKeys": [],
"timeoutInMillisecond": 10000
@ -333,24 +398,30 @@
{
"id": "Page1_mockApi",
"name": "mockApi",
"confirmBeforeExecute": false,
"pluginType": "API",
"jsonPathKeys": [],
"timeoutInMillisecond": 10000
}
]
],
"new": false
"layoutOnLoadActionErrors": [],
"validOnPageLoadActions": true,
"id": "Page1",
"deleted": false,
"policies": [],
"userPermissions": []
}
],
"userPermissions": []
"userPermissions": [],
"policies": []
},
"publishedPage": {
"name": "Page1",
"slug": "page1",
"layouts": [
{
"id": "Page1",
"userPermissions": [],
"viewMode": false,
"dsl": {
"widgetName": "MainContainer",
"backgroundColor": "none",
@ -372,31 +443,83 @@
"leftColumn": 0,
"children": []
},
"new": false
"validOnPageLoadActions": true,
"id": "Page1",
"deleted": false,
"policies": [],
"userPermissions": []
}
],
"userPermissions": []
"userPermissions": [],
"policies": []
},
"new": true
"deleted": false,
"gitSyncId": "61c580d685c0bd4ccf7d1716_61c580d685c0bd4ccf7d1718"
}
],
"publishedDefaultPageName": "Page1",
"unpublishedDefaultPageName": "Page1",
"actionList": [
{
"id": "Page1_mockApi",
"userPermissions": [
"read:actions",
"execute:actions",
"manage:actions"
],
"gitSyncId": "61c580d685c0bd4ccf7d1716_61c580e385c0bd4ccf7d171a",
"pluginType": "DB",
"pluginId": "postgres-plugin",
"unpublishedAction": {
"name": "get_schema",
"datasource": {
"pluginId": "postgres-plugin",
"messages": [],
"isAutoGenerated": false,
"id": "mockdata",
"deleted": false,
"policies": [],
"userPermissions": []
},
"pageId": "Page1",
"actionConfiguration": {
"timeoutInMillisecond": 10000,
"paginationType": "NONE",
"encodeParamsToggle": true,
"body": "SELECT schema_name FROM information_schema.schemata;",
"selfReferencingDataPaths": [],
"pluginSpecifiedTemplates": [
{
"value": true
}
]
},
"executeOnLoad": true,
"dynamicBindingPathList": [],
"isValid": true,
"invalids": [],
"messages": [],
"jsonPathKeys": [],
"userSetOnLoad": false,
"confirmBeforeExecute": false,
"policies": [],
"userPermissions": []
},
"publishedAction": {
"datasource": {
"messages": [],
"isAutoGenerated": false,
"deleted": false,
"policies": [],
"userPermissions": []
},
"messages": [],
"userSetOnLoad": false,
"confirmBeforeExecute": false,
"policies": [],
"userPermissions": []
},
"id": "Page1_get_schema",
"deleted": false,
"gitSyncId": "61c580d685c0bd4ccf7d1716_61c5832685c0bd4ccf7d171e"
},
{
"pluginType": "API",
"pluginId": "restapi-plugin",
"unpublishedAction": {
"name": "mockApi",
"datasource": {
"userPermissions": [],
"name": "DEFAULT_REST_DATASOURCE",
"pluginId": "restapi-plugin",
"datasourceConfiguration": {
@ -404,8 +527,10 @@
},
"invalids": [],
"messages": [],
"isValid": true,
"new": true
"isAutoGenerated": false,
"deleted": false,
"policies": [],
"userPermissions": []
},
"pageId": "Page1",
"actionConfiguration": {
@ -422,6 +547,7 @@
"queryParameters": [],
"body": "",
"httpMethod": "GET",
"selfReferencingDataPaths": [],
"pluginSpecifiedTemplates": [
{
"value": true
@ -434,43 +560,43 @@
"invalids": [],
"messages": [],
"jsonPathKeys": [],
"userSetOnLoad": false,
"confirmBeforeExecute": false,
"userPermissions": [],
"validName": "mockApi"
"policies": [],
"userPermissions": []
},
"publishedAction": {
"datasource": {
"userPermissions": [],
"messages": [],
"isValid": true,
"new": true
"isAutoGenerated": false,
"deleted": false,
"policies": [],
"userPermissions": []
},
"messages": [],
"userSetOnLoad": false,
"confirmBeforeExecute": false,
"policies": [],
"userPermissions": []
},
"new": false
"id": "Page1_mockApi",
"deleted": false,
"gitSyncId": "61c580d685c0bd4ccf7d1716_61c580e385c0bd4ccf7d171a"
},
{
"id": "Page1_myFun1",
"userPermissions": [
"read:actions",
"execute:actions",
"manage:actions"
],
"gitSyncId": "61c580d685c0bd4ccf7d1716_61c58ced85c0bd4ccf7d1722",
"pluginType": "JS",
"pluginId": "js-plugin",
"unpublishedAction": {
"name": "myFun1",
"fullyQualifiedName": "JSObject1.myFun1",
"datasource": {
"userPermissions": [],
"name": "UNUSED_DATASOURCE",
"pluginId": "js-plugin",
"messages": [],
"isValid": true,
"new": true
"isAutoGenerated": false,
"deleted": false,
"policies": [],
"userPermissions": []
},
"pageId": "Page1",
"collectionId": "Page1_JSObject1",
@ -478,7 +604,8 @@
"timeoutInMillisecond": 10000,
"paginationType": "NONE",
"encodeParamsToggle": true,
"body": "() => {\n\t\t//write code here\n\t\treturn JSObject1.myVar1;\n\t}",
"body": "() => {\n return JSObject1.myVar1;\n}",
"selfReferencingDataPaths": [],
"jsArguments": [],
"isAsync": false
},
@ -492,100 +619,45 @@
"invalids": [],
"messages": [],
"jsonPathKeys": [
"() => {\n\t\t//write code here\n\t\treturn JSObject1.myVar1;\n\t}"
"() => {\n return JSObject1.myVar1;\n}"
],
"userSetOnLoad": false,
"confirmBeforeExecute": false,
"userPermissions": [],
"validName": "JSObject1.myFun1"
"policies": [],
"userPermissions": []
},
"publishedAction": {
"datasource": {
"userPermissions": [],
"messages": [],
"isValid": true,
"new": true
"isAutoGenerated": false,
"deleted": false,
"policies": [],
"userPermissions": []
},
"messages": [],
"userSetOnLoad": false,
"confirmBeforeExecute": false,
"policies": [],
"userPermissions": []
},
"new": false
"id": "Page1_JSObject1.myFun1",
"deleted": false,
"gitSyncId": "61c580d685c0bd4ccf7d1716_61c58ced85c0bd4ccf7d1722"
},
{
"id": "Page1_get_schema",
"userPermissions": [
"read:actions",
"execute:actions",
"manage:actions"
],
"gitSyncId": "61c580d685c0bd4ccf7d1716_61c5832685c0bd4ccf7d171e",
"pluginType": "DB",
"pluginId": "postgres-plugin",
"unpublishedAction": {
"name": "get_schema",
"datasource": {
"id": "mockdata",
"userPermissions": [],
"pluginId": "postgres-plugin",
"messages": [],
"isValid": true,
"new": false
},
"pageId": "Page1",
"actionConfiguration": {
"timeoutInMillisecond": 10000,
"paginationType": "NONE",
"encodeParamsToggle": true,
"body": "SELECT schema_name FROM information_schema.schemata;",
"pluginSpecifiedTemplates": [
{
"value": true
}
]
},
"executeOnLoad": true,
"dynamicBindingPathList": [],
"isValid": true,
"invalids": [],
"messages": [],
"jsonPathKeys": [],
"confirmBeforeExecute": false,
"userPermissions": [],
"validName": "get_schema"
},
"publishedAction": {
"datasource": {
"userPermissions": [],
"messages": [],
"isValid": true,
"new": true
},
"messages": [],
"confirmBeforeExecute": false,
"userPermissions": []
},
"new": false
},
{
"id": "Page1_myFun2",
"userPermissions": [
"read:actions",
"execute:actions",
"manage:actions"
],
"gitSyncId": "61c580d685c0bd4ccf7d1716_61c58ced85c0bd4ccf7d1724",
"pluginType": "JS",
"pluginId": "js-plugin",
"unpublishedAction": {
"name": "myFun2",
"fullyQualifiedName": "JSObject1.myFun2",
"datasource": {
"userPermissions": [],
"name": "UNUSED_DATASOURCE",
"pluginId": "js-plugin",
"messages": [],
"isValid": true,
"new": true
"isAutoGenerated": false,
"deleted": false,
"policies": [],
"userPermissions": []
},
"pageId": "Page1",
"collectionId": "Page1_JSObject1",
@ -593,7 +665,8 @@
"timeoutInMillisecond": 10000,
"paginationType": "NONE",
"encodeParamsToggle": true,
"body": "() => {\n\t\t//write code here\n\t}",
"body": "() => {}",
"selfReferencingDataPaths": [],
"jsArguments": [],
"isAsync": false
},
@ -607,69 +680,83 @@
"invalids": [],
"messages": [],
"jsonPathKeys": [
"() => {\n\t\t//write code here\n\t}"
"() => {}"
],
"userSetOnLoad": false,
"confirmBeforeExecute": false,
"userPermissions": [],
"validName": "JSObject1.myFun2"
"policies": [],
"userPermissions": []
},
"publishedAction": {
"datasource": {
"userPermissions": [],
"messages": [],
"isValid": true,
"new": true
"isAutoGenerated": false,
"deleted": false,
"policies": [],
"userPermissions": []
},
"messages": [],
"userSetOnLoad": false,
"confirmBeforeExecute": false,
"policies": [],
"userPermissions": []
},
"new": false
"id": "Page1_JSObject1.myFun2",
"deleted": false,
"gitSyncId": "61c580d685c0bd4ccf7d1716_61c58ced85c0bd4ccf7d1724"
}
],
"actionCollectionList": [
{
"id": "Page1_JSObject1",
"userPermissions": [
"read:actions",
"execute:actions",
"manage:actions"
],
"gitSyncId": "61c580d685c0bd4ccf7d1716_61c58ced85c0bd4ccf7d1726",
"unpublishedCollection": {
"name": "JSObject1",
"pageId": "Page1",
"pluginId": "js-plugin",
"pluginType": "JS",
"actionIds": [],
"archivedActionIds": [],
"actions": [],
"archivedActions": [],
"body": "export default {\n\tmyVar1: \"Submit\",\n\tmyVar2: {},\n\tmyFun1: () => {\n\t\t//write code here\n\t\treturn this.myVar1;\n\t},\n\tmyFun2: () => {\n\t\t//write code here\n\t}\n}",
"variables": [
{
"name": "myVar1",
"value": "Submit"
"value": "\"Submit\""
},
{
"name": "myVar2",
"value": {}
"value": "{}"
}
]
],
"userPermissions": []
},
"new": false
"id": "Page1_JSObject1",
"deleted": false,
"gitSyncId": "61c580d685c0bd4ccf7d1716_61c58ced85c0bd4ccf7d1726"
}
],
"updatedResources": {
"actionList": [
"JSObject1.myFun2##ENTITY_SEPARATOR##Page1",
"mockApi##ENTITY_SEPARATOR##Page1",
"JSObject1.myFun1##ENTITY_SEPARATOR##Page1",
"get_schema##ENTITY_SEPARATOR##Page1"
],
"pageList": [
"Page1"
],
"actionCollectionList": [
"JSObject1##ENTITY_SEPARATOR##Page1"
]
},
"editModeTheme": {
"name": "Classic",
"new": true,
"isSystemTheme": true
"displayName": "Classic",
"isSystemTheme": true,
"deleted": false
},
"publishedTheme": {
"name": "Classic",
"new": true,
"isSystemTheme": true
},
"publishedLayoutmongoEscapedWidgets": {},
"unpublishedLayoutmongoEscapedWidgets": {}
"displayName": "Classic",
"isSystemTheme": true,
"deleted": false
}
}

View File

@ -2,76 +2,97 @@
"dsl": {
"widgetName": "MainContainer",
"backgroundColor": "none",
"rightColumn": 909,
"snapColumns": 64,
"rightColumn": 4896.0,
"snapColumns": 64.0,
"detachFromLayout": true,
"widgetId": "0",
"topRow": 0,
"bottomRow": 710,
"topRow": 0.0,
"bottomRow": 790.0,
"containerStyle": "none",
"snapRows": 125,
"parentRowSpace": 1,
"snapRows": 125.0,
"parentRowSpace": 1.0,
"type": "CANVAS_WIDGET",
"canExtend": true,
"version": 53,
"minHeight": 690,
"parentColumnSpace": 1,
"version": 66.0,
"minHeight": 1292.0,
"dynamicTriggerPathList": [],
"parentColumnSpace": 1.0,
"dynamicBindingPathList": [],
"leftColumn": 0,
"children": [
{
"isCompact": false,
"widgetName": "MenuButton1",
"displayName": "Menu Button",
"iconSVG": "/static/media/icon.0341d17d.svg",
"topRow": 5,
"bottomRow": 9,
"parentRowSpace": 10,
"type": "MENU_BUTTON_WIDGET",
"hideCard": false,
"animateLoading": true,
"parentColumnSpace": 14.015625,
"leftColumn": 3,
"isDisabled": false,
"key": "ngk48zgyuy",
"rightColumn": 19,
"menuVariant": "PRIMARY",
"widgetId": "z2o5n9g9yw",
"menuItems": {
"menuItem1": {
"label": "First Menu Item",
"id": "menuItem1",
"widgetId": "",
"isVisible": true,
"isDisabled": false,
"index": 0
},
"menuItem2": {
"label": "Second Menu Item",
"id": "menuItem2",
"widgetId": "",
"isVisible": true,
"isDisabled": false,
"index": 1
},
"menuItem3": {
"label": "Third Menu Item",
"id": "menuItem3",
"widgetId": "",
"isVisible": true,
"isDisabled": false,
"index": 2
}
"leftColumn": 0.0,
"children": [{
"isCompact": false,
"boxShadow": "none",
"widgetName": "MenuButton1",
"configureMenuItems": {
"label": "Configure Menu Items",
"id": "config",
"config": {
"id": "config",
"label": "",
"isVisible": true,
"isDisabled": false
}
},
"displayName": "Menu Button",
"iconSVG": "/static/media/icon.0341d17d67020c8bfc560cc5928af2a7.svg",
"topRow": 13.0,
"bottomRow": 17.0,
"parentRowSpace": 10.0,
"type": "MENU_BUTTON_WIDGET",
"hideCard": false,
"animateLoading": true,
"parentColumnSpace": 12.5625,
"dynamicTriggerPathList": [],
"leftColumn": 14.0,
"dynamicBindingPathList": [{
"key": "menuColor"
}, {
"key": "borderRadius"
}],
"isDisabled": false,
"sourceData": "",
"key": "ruwr6lq57j",
"sourceDataKeys": [],
"isDeprecated": false,
"rightColumn": 30.0,
"menuVariant": "PRIMARY",
"widgetId": "varnzc9ez9",
"menuItems": {
"menuItem1": {
"label": "First Menu Item",
"id": "menuItem1",
"widgetId": "",
"isVisible": true,
"isDisabled": false,
"index": 0.0
},
"isVisible": true,
"label": "Open Menu",
"version": 1,
"parentId": "0",
"renderMode": "CANVAS",
"isLoading": false,
"menuColor": "#03B365",
"placement": "CENTER"
}
]
"menuItem2": {
"label": "Second Menu Item",
"id": "menuItem2",
"widgetId": "",
"isVisible": true,
"isDisabled": false,
"index": 1.0
},
"menuItem3": {
"label": "Third Menu Item",
"id": "menuItem3",
"widgetId": "",
"isVisible": true,
"isDisabled": false,
"index": 2.0
}
},
"isVisible": true,
"label": "Open Menu",
"version": 1.0,
"parentId": "0",
"renderMode": "CANVAS",
"isLoading": false,
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"menuItemsSource": "STATIC",
"menuColor": "{{appsmith.theme.colors.primaryColor}}",
"placement": "CENTER"
}]
}
}

View File

@ -232,6 +232,7 @@
"rightColumn": 18,
"menuVariant": "PRIMARY",
"widgetId": "33f9n054tq",
"menuItemsSource": "STATIC",
"menuItems": {
"menuItem1": {
"label": "First Menu Item",

View File

@ -11,7 +11,7 @@ describe("Content Management System App", function() {
cy.startRoutesForDatasource();
});
it.only("1.Create Get echo Api call", function() {
it("1.Create Get echo Api call", function() {
cy.NavigateToAPI_Panel();
cy.CreateAPI("get_data");
// creating get request using echo

View File

@ -34,7 +34,7 @@ describe("Import, Export and Fork application and validate data binding", functi
const name = uuid();
appName = `app${name}`;
cy.get(homePage.applicationName).click({ force: true });
cy.get(`${homePage.applicationEditMenu} li:first-child a`).click({
cy.get(`${homePage.applicationEditMenu} li:nth-child(3) a`).click({
force: true,
});
cy.wait(2000);

View File

@ -20,7 +20,7 @@ describe("Shopping cart App", function() {
cy.get(datasource.MongoDB).click();
cy.fillMongoDatasourceForm();
cy.testSaveDatasource();
cy.get("@createDatasource").then((httpResponse) => {
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
cy.NavigateToQueryEditor();

View File

@ -24,7 +24,7 @@ describe("PgAdmin Clone App", function() {
cy.testSaveDatasource();
cy.get("@createDatasource").then((httpResponse) => {
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
});

View File

@ -53,7 +53,8 @@ describe("Reconnect Datasource Modal validation while importing application", fu
cy.ReconnectDatasource("Untitled Datasource");
cy.wait(1000);
cy.fillPostgresDatasourceForm();
cy.testSaveDatasource();
cy.testDatasource(true);
cy.get(".t--save-datasource").click({ force: true });
cy.wait(2000);
// cy.get(reconnectDatasourceModal.SkipToAppBtn).click({
@ -79,7 +80,7 @@ describe("Reconnect Datasource Modal validation while importing application", fu
const name = uuid();
appName = `app${name}`;
cy.get(homePage.applicationName).click({ force: true });
cy.get(`${homePage.applicationEditMenu} li:first-child a`).click({
cy.get(`${homePage.applicationEditMenu} li:nth-child(3) a`).click({
force: true,
});
cy.wait(2000);

View File

@ -8,7 +8,6 @@ const {
} = ObjectsRegistry;
describe("Navigate To feature", () => {
beforeEach(() => {
agHelper.RestoreLocalStorageCache();
});
@ -29,9 +28,20 @@ describe("Navigate To feature", () => {
cy.get(".t--open-dropdown-Select-Page").click();
agHelper.AssertElementLength(".bp3-menu-item", 2);
cy.get(locator._dropDownValue("Page2")).click();
cy.get("label")
.contains("Query Params")
.siblings()
.find(".CodeEditorTarget")
.then(($el) => cy.updateCodeInput($el, "{{{ test: '123' }}}"));
agHelper.ClickButton("Submit");
cy.url().should("include", "a=b");
cy.url().should("include", "test=123");
ee.SelectEntityByName("Page1");
deployMode.DeployApp();
agHelper.ClickButton("Submit");
cy.get(".bp3-heading").contains("This page seems to be blank");
cy.url().should("include", "a=b");
cy.url().should("include", "test=123");
deployMode.NavigateBacktoEditor();
});

View File

@ -15,7 +15,7 @@ describe("Addwidget from Query and bind with other widgets", function() {
it("1. Create a query and populate response by choosing addWidget and validate in Table Widget & Bug 7413", () => {
cy.addDsl(dsl);
cy.createPostgresDatasource();
cy.get("@createDatasource").then((httpResponse) => {
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
cy.NavigateToActiveDSQueryPane(datasourceName);

View File

@ -21,7 +21,7 @@ describe("Binding the multiple widgets and validating default data", function()
cy.get(datasource.PostgreSQL).click();
cy.fillPostgresDatasourceForm();
cy.testSaveDatasource();
cy.get("@createDatasource").then((httpResponse) => {
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
});

View File

@ -51,7 +51,12 @@ describe("Binding Expressions should not be truncated in Url and path extraction
.dblclick()
.dblclick()
.type("{{JSObject1.");
agHelper.GetNAssertElementText(locator._hints, "offsetValue", "have.text", 1);
agHelper.GetNAssertElementText(
locator._hints,
"offsetValue",
"have.text",
1,
);
agHelper.Sleep();
agHelper.TypeText(locator._codeMirrorTextArea, "offsetValue", 1);
agHelper.Sleep(2000);
@ -66,7 +71,6 @@ describe("Binding Expressions should not be truncated in Url and path extraction
.contains("__limit__")
//.trigger("mouseover")
.dblclick()
.dblclick()
.type("{{JSObject1.");
agHelper.GetNClickByContains(locator._hints, "limitValue");
agHelper.Sleep(2000);

View File

@ -4,14 +4,13 @@ let dsName: any;
const agHelper = ObjectsRegistry.AggregateHelper,
ee = ObjectsRegistry.EntityExplorer,
dataSources = ObjectsRegistry.DataSources,
propPane = ObjectsRegistry.PropertyPane,
homePage = ObjectsRegistry.HomePage,
locator = ObjectsRegistry.CommonLocators,
table = ObjectsRegistry.Table;
table = ObjectsRegistry.Table,
appSettings = ObjectsRegistry.AppSettings;
describe("Bug 9334: The Select widget value is sent as null when user switches between the pages", function() {
before(() => {
propPane.ChangeTheme("Pampas");
appSettings.openPaneAndChangeTheme("Pampas");
});
it("1. Create Postgress DS", function() {

View File

@ -8,15 +8,15 @@ const agHelper = ObjectsRegistry.AggregateHelper,
table = ObjectsRegistry.Table,
locator = ObjectsRegistry.CommonLocators,
deployMode = ObjectsRegistry.DeployMode,
jsEditor = ObjectsRegistry.JSEditor;
jsEditor = ObjectsRegistry.JSEditor,
appSettings = ObjectsRegistry.AppSettings;
describe("Bug #14299 - The data from the query does not show up on the widget", function() {
before(() => {
cy.fixture("/Bugs/14299dsl").then((val: any) => {
agHelper.AddDsl(val);
});
propPane.ChangeThemeColor(13, "Primary");
propPane.ChangeThemeColor(22, "Background");
appSettings.openPaneAndChangeThemeColors(13, 22);
});
it("1. Create Postgress DS", function() {
@ -47,7 +47,10 @@ describe("Bug #14299 - The data from the query does not show up on the widget",
);
ee.SelectEntityByName("Table1");
propPane.UpdatePropertyFieldValue("Table Data", `{{JSObject1.runAstros.data}}`);
propPane.UpdatePropertyFieldValue(
"Table Data",
`{{JSObject1.runAstros.data}}`,
);
ee.SelectEntityByName("DatePicker1");
propPane.UpdatePropertyFieldValue(
@ -97,7 +100,7 @@ describe("Bug #14299 - The data from the query does not show up on the widget",
table.NavigateToNextPage(false);
table.WaitUntilTableLoad();
table.SelectTableRow(1);//Asserting here table is available for selection
table.SelectTableRow(1); //Asserting here table is available for selection
table.ReadTableRowColumnData(1, 0, 200).then(($cellData) => {
expect($cellData).to.eq("286");
});
@ -113,15 +116,20 @@ describe("Bug #14299 - The data from the query does not show up on the widget",
deployMode.NavigateBacktoEditor();
agHelper.AssertContains("ran successfully"); //runAstros triggered on PageLaoad of Edit page!
ee.ExpandCollapseEntity("Queries/JS");
ee.ActionContextMenuByEntityName("getAstronauts", "Delete", "Are you sure?");
ee.ActionContextMenuByEntityName(
"getAstronauts",
"Delete",
"Are you sure?",
);
ee.ActionContextMenuByEntityName(
"JSObject1",
"Delete",
"Are you sure?", true
"Are you sure?",
true,
);
deployMode.DeployApp(locator._widgetInDeployed("tablewidget"), false);
deployMode.NavigateBacktoEditor();
ee.ExpandCollapseEntity("Datasources");
dataSources.DeleteDatasouceFromWinthinDS(dsName, 200); //ProductLines, Employees pages are still using this ds
});
});
});

View File

@ -6,6 +6,7 @@ describe("Dynamic Height Width validation with limits", function() {
cy.addDsl(dsl);
cy.wait(3000); //for dsl to settle
cy.openPropertyPane("containerwidget");
cy.get(commonlocators.generalSectionHeight).should("be.visible");
cy.changeLayoutHeight(commonlocators.autoHeightWithLimits);
cy.wait(3000); //for dsl to settle
//cy.checkMinDefaultValue(commonlocators.minHeight,"4")

View File

@ -1,8 +1,20 @@
const dsl = require("../../../../fixtures/dynamicHeightContainerCheckboxdsl.json");
const cdsl = require("../../../../fixtures/dynamicHeigthContainerFixedDsl.json");
const commonlocators = require("../../../../locators/commonlocators.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
const agHelper = ObjectsRegistry.AggregateHelper;
describe("Dynamic Height Width validation", function() {
it("Validate change with auto height width for widgets", function() {
describe("Dynamic Height Width validation", function () {
afterEach(() => {
agHelper.SaveLocalStorageCache();
});
beforeEach(() => {
agHelper.RestoreLocalStorageCache();
});
it("Validate change with auto height width for widgets", function () {
cy.addDsl(dsl);
cy.wait(3000); //for dsl to settle
cy.openPropertyPane("containerwidget");
@ -16,11 +28,13 @@ describe("Dynamic Height Width validation", function() {
.invoke("css", "height")
.then((checkboxheight) => {
cy.get(commonlocators.addOption).click();
cy.wait(200);
cy.wait("@updateLayout").should(
"have.nested.property",
"response.body.responseMeta.status",
200,
);
cy.wait(3000);
cy.get(".t--widget-checkboxgroupwidget")
.invoke("css", "height")
.then((newcheckboxheight) => {
@ -35,4 +49,29 @@ describe("Dynamic Height Width validation", function() {
});
});
});
it("Validate container with auto height and child widgets with fixed height", function () {
cy.addDsl(cdsl);
cy.wait(3000); //for dsl to settle
//cy.openPropertyPane("containerwidget");
//cy.changeLayoutHeight(commonlocators.autoHeight);
cy.openPropertyPane("checkboxgroupwidget");
cy.get(commonlocators.generalSectionHeight).scrollIntoView().should("be.visible");
cy.changeLayoutHeight(commonlocators.autoHeight);
cy.openPropertyPane("inputwidgetv2");
cy.get(commonlocators.generalSectionHeight).scrollIntoView().should("be.visible");
cy.changeLayoutHeight(commonlocators.autoHeight);
cy.get(".t--widget-containerwidget")
.invoke("css", "height")
.then((height) => {
cy.openPropertyPane("containerwidget");
cy.changeLayoutHeight(commonlocators.autoHeight);
cy.wait(4000);
cy.get(".t--widget-containerwidget")
.invoke("css", "height")
.then((newheight) => {
expect(height).to.not.equal(newheight);
});
});
});
});

View File

@ -0,0 +1,78 @@
const dsl = require("../../../../fixtures/dynamicHeightCanvasResizeDsl.json");
const commonlocators = require("../../../../locators/commonlocators.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
const agHelper = ObjectsRegistry.AggregateHelper;
describe("Dynamic Height Width validation with multiple containers and text widget", function () {
afterEach(() => {
agHelper.SaveLocalStorageCache();
});
beforeEach(() => {
agHelper.RestoreLocalStorageCache();
});
it("Validate change with auto height width for widgets", function () {
const textMsg = "Dynamic panel validation for text widget wrt height Dynamic panel validation for text widget wrt height Dynamic panel validation for text widget wrt height";
cy.addDsl(dsl);
cy.wait(3000); //for dsl to settle
cy.get(".t--widget-containerwidget")
.eq(0)
.invoke("css", "height")
.then((oheight) => {
cy.get(".t--widget-textwidget")
.invoke("css", "height")
.then((tnewheight) => {
cy.openPropertyPane("textwidget");
cy.get(".t--widget-textwidget")
.invoke("css", "height")
.then((theight) => {
//Changing the text label
cy.testCodeMirror(textMsg);
cy.moveToStyleTab();
cy.ChangeTextStyle(
this.data.TextHeading,
commonlocators.headingTextStyle,
textMsg,
);
cy.wait("@updateLayout");
cy.get(".t--widget-textwidget")
.invoke("css", "height")
.then((tnewheight) => {
expect(theight).to.not.equal(tnewheight);
cy.get(".t--widget-containerwidget")
.eq(0)
.invoke("css", "height")
.then((newcheight) => {
expect(oheight).to.not.equal(newcheight);
cy.moveToContentTab();
const modifierKey = Cypress.platform === "darwin" ? "meta" : "ctrl";
cy.get(".CodeMirror textarea")
.first()
.focus()
.type(`{${modifierKey}}a`)
.then(($cm) => {
if ($cm.val() !== "") {
cy.get(".CodeMirror textarea")
.first()
.clear({
force: true,
});
}
});
cy.wait("@updateLayout")
cy.wait(4000);
cy.get(".t--widget-containerwidget")
.eq(0)
.invoke("css", "height")
.then((updatedcheight) => {
expect(oheight).to.equal(updatedcheight);
});
});
});
})
})
})
});
})

View File

@ -0,0 +1,16 @@
const dsl = require("../../../../fixtures/dynamicHeightContainerScrolldsl.json");
const commonlocators = require("../../../../locators/commonlocators.json");
describe("Dynamic Height Width validation", function() {
it("Validate change with auto height width for widgets", function() {
cy.addDsl(dsl);
cy.wait(3000); //for dsl to settle
cy.openPropertyPane("containerwidget");
cy.get(".t--widget-textwidget").trigger("mouseover",{force:true}) // Scroll 'sidebar' to its bottom
cy.openPropertyPane("textwidget");
//cy.PublishtheApp();
//cy.wait(5000);
//cy.get(".t--widget-containerwidget").trigger("mouseover",{force:true}) // Scroll 'sidebar' to its bottom
cy.wait(5000);
});
});

View File

@ -0,0 +1,32 @@
const dsl = require("../../../../fixtures/DynamicHeightDefaultHeightdsl.json");
const commonlocators = require("../../../../locators/commonlocators.json");
describe("Dynamic Height Width validation", function () {
it("Validate change with auto height width for widgets", function () {
const modifierKey = Cypress.platform === "darwin" ? "meta" : "ctrl";
cy.addDsl(dsl);
cy.wait(3000); //for dsl to settle
cy.openPropertyPane("containerwidget");
cy.get(".t--widget-containerwidget")
.invoke("css", "height")
.then((height) => {
cy.openPropertyPane("buttonwidget");
cy.get("body").type("{del}", { force: true });
cy.wait(2000);
cy.get(".t--widget-containerwidget")
.invoke("css", "height")
.then((newheight) => {
expect(height).to.not.equal(newheight);
expect(newheight).to.equal('100px');
cy.get("body").type(`{${modifierKey}}z`);
cy.wait(2000);
cy.get(".t--widget-containerwidget")
.invoke("css", "height")
.then((oheight) => {
expect(oheight).to.equal(height);
expect(oheight).to.not.equal(newheight);
})
});
});
});
});

View File

@ -0,0 +1,41 @@
const dsl = require("../../../../fixtures/dynamicHeightListDsl.json");
const commonlocators = require("../../../../locators/commonlocators.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
const agHelper = ObjectsRegistry.AggregateHelper;
describe("Dynamic Height Width validation", function () {
afterEach(() => {
agHelper.SaveLocalStorageCache();
});
beforeEach(() => {
agHelper.RestoreLocalStorageCache();
});
it("Validate change with auto height width for widgets", function () {
const textMsg = "Dynamic panel validation for text widget wrt height";
cy.addDsl(dsl);
cy.wait(3000); //for dsl to settle
cy.openPropertyPane("listwidget");
cy.get(".t--widget-listwidget")
.invoke("css", "height")
.then((lheight) => {
cy.get(commonlocators.generalSectionHeight).should("not.exist");
cy.openPropertyPaneWithIndex("textwidget", 0);
cy.get(commonlocators.generalSectionHeight).should("be.visible");
cy.changeLayoutHeightWithoutWait(commonlocators.autoHeight);
cy.testCodeMirror(textMsg);
cy.openPropertyPaneWithIndex("textwidget", 1);
cy.get(commonlocators.generalSectionHeight).should("be.visible");
cy.changeLayoutHeightWithoutWait(commonlocators.autoHeight);
cy.testCodeMirror(textMsg);
cy.get(".t--widget-listwidget")
.invoke("css", "height")
.then((newheight) => {
expect(lheight).to.equal(newheight);
})
})
});
});

View File

@ -1,15 +1,15 @@
const dsl = require("../../../../fixtures/dynamicTabWidgetdsl.json");
const commonlocators = require("../../../../locators/commonlocators.json");
const publish = require("../../../../locators/publishWidgetspage.json");
describe("Dynamic Height Width validation for Tab widget", function() {
describe("Dynamic Height Width validation for Tab widget", function () {
before(() => {
cy.addDsl(dsl);
});
it("Tab widget validation of height with dynamic height feature", function() {
//changing the Text Name and verifying
cy.wait(3000);
cy.openPropertyPane("tabswidget");
cy.changeLayoutHeightWithoutWait(commonlocators.autoHeight);
function validateHeight() {
cy.wait(5000);
cy.get(".t--tabid-tab1").click({ force: true });
cy.wait(3000);
cy.get(".t--widget-tabswidget")
@ -27,11 +27,43 @@ describe("Dynamic Height Width validation for Tab widget", function() {
.invoke("css", "height")
.then((tnewheight) => {
expect(theight).to.not.equal(tnewheight);
cy.reload();
cy.openPropertyPane("tabswidget");
expect(theight).to.equal(theight);
});
});
}
it("Tab widget validation of height with dynamic height feature with publish mode", function () {
//changing the Text Name and verifying
cy.wait(3000);
cy.openPropertyPane("tabswidget");
cy.changeLayoutHeightWithoutWait(commonlocators.autoHeight);
cy.get(".t--tabid-tab1").click({ force: true });
validateHeight();
cy.PublishtheApp();
validateHeight();
cy.get(publish.backToEditor).click();
cy.get(".t--switch-preview-mode-toggle").should("be.visible");
cy.get(".t--switch-preview-mode-toggle").click({force: true});
cy.wait(5000);
cy.get(".t--tabid-tab1").click({ force: true });
cy.wait(3000);
cy.get(".t--widget-tabswidget")
.invoke("css", "height")
.then((theight) => {
cy.get(".t--tabid-tab2").click({ force: true });
cy.wait(3000);
//cy.get(".t--draggable-checkboxwidget .bp3-control-indicator").click({ force: true })
cy.get(".t--widget-tabswidget")
.invoke("css", "height")
.then((tnewheight) => {
expect(theight).to.not.equal(tnewheight);
});
});
});
it("Tab widget validation of height with preview mode", function () {
cy.get(".t--switch-comment-mode-off").should("be.visible");
cy.get(".t--switch-comment-mode-off").click({force: true});
cy.wait(3000);
cy.openPropertyPane("tabswidget");
cy.changeLayoutHeight(commonlocators.fixed);
cy.get(".t--tabid-tab1").click({ force: true });
cy.wait(3000);
@ -61,4 +93,29 @@ describe("Dynamic Height Width validation for Tab widget", function() {
});
});
});
it("Tab widget validation of height with reload", function () {
cy.wait(3000);
cy.openPropertyPane("tabswidget");
cy.get(commonlocators.generalSectionHeight).should("be.visible");
cy.get(commonlocators.showTabsControl).click({ force: true });
cy.changeLayoutHeight(commonlocators.autoHeight);
cy.wait(3000);
cy.get(".t--tabid-tab1").click({ force: true });
cy.wait(5000);
cy.get(".t--widget-tabswidget")
.invoke("css", "height")
.then((theight) => {
cy.get(".t--tabid-tab2").click({ force: true });
cy.changeLayoutHeight(commonlocators.fixed);
cy.wait(3000);
cy.reload();
cy.openPropertyPane("tabswidget");
cy.get(".t--widget-tabswidget")
.invoke("css", "height")
.then((tnewheight) => {
expect(theight).to.not.equal(tnewheight);
});
});
});
});

View File

@ -9,6 +9,7 @@ describe("Dynamic Height Width validation for text widget", function() {
const textMsg = "Dynamic panel validation for text widget wrt height";
//changing the Text Name and verifying
cy.openPropertyPane("textwidget");
cy.get(commonlocators.generalSectionHeight).should("be.visible");
cy.changeLayoutHeightWithoutWait(commonlocators.autoHeight);
cy.get(".t--widget-textwidget")
.invoke("css", "height")

View File

@ -31,7 +31,7 @@ describe("Entity explorer tests related to copy query", function() {
cy.fillPostgresDatasourceForm();
cy.testSaveDatasource();
cy.get("@createDatasource").then((httpResponse) => {
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
cy.CheckAndUnfoldEntityItem("Datasources");
cy.NavigateToActiveDSQueryPane(datasourceName);
@ -51,7 +51,7 @@ describe("Entity explorer tests related to copy query", function() {
cy.EvaluateCurrentValue("select * from users");
cy.get(".t--action-name-edit-field").click({ force: true });
cy.get("@createDatasource").then((httpResponse) => {
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
cy.CheckAndUnfoldEntityItem("Queries/JS");
@ -97,8 +97,8 @@ describe("Entity explorer tests related to copy query", function() {
cy.log("complete uid :" + updatedName);
updatedName = uid.replace(/-/g, "_").slice(1, 15);
cy.log("sliced id :" + updatedName);
cy.CheckAndUnfoldEntityItem("Queries/JS");
cy.EditEntityNameByDoubleClick(datasourceName, updatedName);
ee.RenameEntityFromExplorer(datasourceName, updatedName);
//cy.EditEntityNameByDoubleClick(datasourceName, updatedName);
cy.wait(1000);
ee.ActionContextMenuByEntityName(updatedName, "Delete", "Are you sure?");
cy.wait(1000);
@ -109,6 +109,7 @@ describe("Entity explorer tests related to copy query", function() {
409,
);
});
cy.CheckAndUnfoldEntityItem("Queries/JS");
cy.get(".t--entity-name")
.contains("Query1")
.click();

View File

@ -13,7 +13,7 @@ describe("Entity explorer datasource structure", function() {
//cy.ClearSearch();
cy.startRoutesForDatasource();
cy.createPostgresDatasource();
cy.get("@createDatasource").then((httpResponse) => {
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
});

View File

@ -10,7 +10,7 @@ before(() => {
});
describe("Test Suite to validate copy/delete/undo functionalites", function() {
it("Drag and drop form widget and validate copy widget via toast message", function() {
it.only("Drag and drop form widget and validate copy widget via toast message", function() {
const modifierKey = Cypress.platform === "darwin" ? "meta" : "ctrl";
cy.openPropertyPane("formwidget");

View File

@ -6,7 +6,7 @@ const agHelper = ObjectsRegistry.AggregateHelper,
describe("Mongo Form to Native conversion works", () => {
beforeEach(() => {
dataSources.startRoutesForDatasource();
dataSources.StartDataSourceRoutes();
});
it("Form to Native conversion works.", () => {

View File

@ -0,0 +1,45 @@
import commonLocators from "../../../../../locators/commonlocators.json";
import { ObjectsRegistry } from "../../../../../support/Objects/Registry";
import gitSyncLocators from "../../../../../locators/gitSyncLocators";
let dataSources = ObjectsRegistry.DataSources;
let testBranchName = "Test";
let repoName;
describe("Bug 18665: Git sync:", function() {
before(() => {
cy.NavigateToHome();
cy.createWorkspace();
cy.wait("@createWorkspace").then((interception) => {
const newWorkspaceName = interception.response.body.data.name;
cy.CreateAppForWorkspace(newWorkspaceName, newWorkspaceName);
});
cy.generateUUID().then((uid) => {
repoName = "test" + uid;
cy.createTestGithubRepo(repoName);
cy.connectToGitRepo(repoName);
});
});
it("1. creates a new branch", function() {
cy.get(commonLocators.canvas).click({ force: true });
cy.generateUUID().then((uid) => {
testBranchName += uid;
cy.createGitBranch(testBranchName + uid);
});
});
it("2. Create datasource, discard it and check current branch", function() {
dataSources.NavigateToDSCreateNew();
dataSources.CreatePlugIn("PostgreSQL");
dataSources.SaveDSFromDialog(false);
cy.get(gitSyncLocators.branchButton)
.contains(testBranchName)
.should("be.visible");
});
after(() => {
cy.deleteTestGithubRepo(repoName);
});
});

View File

@ -1,8 +1,12 @@
import { ObjectsRegistry } from "../../../../../support/Objects/Registry";
const datasource = require("../../../../../locators/DatasourcesEditor.json");
const queryLocators = require("../../../../../locators/QueryEditor.json");
const dynamicInputLocators = require("../../../../../locators/DynamicInput.json");
const explorer = require("../../../../../locators/explorerlocators.json");
let dataSources = ObjectsRegistry.DataSources;
describe("Git discard changes:", function() {
let datasourceName;
let repoName;
@ -20,7 +24,10 @@ describe("Git discard changes:", function() {
cy.testSaveDatasource();
cy.get("@createDatasource").then((httpResponse) => {
// go back to active ds list
dataSources.NavigateToActiveTab();
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
cy.get(datasource.datasourceCard)

View File

@ -39,19 +39,22 @@ describe("Git import flow", function() {
cy.wait(1000);
cy.fillPostgresDatasourceForm();
cy.get(datasourceEditor.sectionAuthentication).click();
cy.testSaveDatasource();
cy.testDatasource(true);
cy.get(".t--save-datasource").click({ force: true });
cy.wait(1000);
cy.ReconnectDatasource("TEDMySQL");
cy.wait(500);
cy.fillMySQLDatasourceForm();
cy.get(datasourceEditor.sectionAuthentication).click();
cy.testSaveDatasource();
cy.testDatasource(true);
cy.get(".t--save-datasource").click({ force: true });
cy.wait(1000);
cy.ReconnectDatasource("TEDMongo");
cy.wait(1000);
cy.fillMongoDatasourceForm();
cy.get(datasourceEditor.sectionAuthentication).click();
cy.testSaveDatasource();
cy.testDatasource(true);
cy.get(".t--save-datasource").click({ force: true });
cy.wait(2000);
/*cy.get(homePage.toastMessage).should(
"contain",
@ -69,6 +72,7 @@ describe("Git import flow", function() {
});
});
});
it("2. Import an app from Git and reconnect Postgres, MySQL and Mongo db ", () => {
cy.NavigateToHome();
cy.createWorkspace();
@ -91,19 +95,22 @@ describe("Git import flow", function() {
cy.wait(500);
cy.fillPostgresDatasourceForm();
cy.get(datasourceEditor.sectionAuthentication).click();
cy.testSaveDatasource();
cy.testDatasource(true);
cy.get(".t--save-datasource").click({ force: true });
cy.wait(500);
cy.ReconnectDatasource("TEDMySQL");
cy.wait(500);
cy.fillMySQLDatasourceForm();
cy.get(datasourceEditor.sectionAuthentication).click();
cy.testSaveDatasource();
cy.testDatasource(true);
cy.get(".t--save-datasource").click({ force: true });
cy.wait(500);
cy.ReconnectDatasource("TEDMongo");
cy.wait(500);
cy.fillMongoDatasourceForm();
cy.get(datasourceEditor.sectionAuthentication).click();
cy.testSaveDatasource();
cy.testDatasource(true);
cy.get(".t--save-datasource").click({ force: true });
cy.wait(2000);
cy.get(reconnectDatasourceModal.ImportSuccessModal).should("be.visible");
cy.get(reconnectDatasourceModal.ImportSuccessModalCloseBtn).click({
@ -119,6 +126,7 @@ describe("Git import flow", function() {
cy.wait(1000);
});
});
it("3. Verfiy imported app should have all the data binding visible in view and edit mode", () => {
// verify postgres data binded to table
cy.get(".tbody")
@ -133,6 +141,7 @@ describe("Git import flow", function() {
// verify js object binded to input widget
cy.xpath("//input[@value='Success']").should("be.visible");
});
it("4. Create a new branch, clone page and validate data on that branch in view and edit mode", () => {
cy.createGitBranch(newBranch);
cy.get(".tbody")
@ -202,6 +211,7 @@ describe("Git import flow", function() {
cy.get(commonlocators.backToEditor).click();
cy.wait(2000);
});
it("5. Switch to master and verify data in edit and view mode", () => {
cy.switchGitBranch("master");
cy.wait(2000);
@ -224,6 +234,7 @@ describe("Git import flow", function() {
cy.get(commonlocators.backToEditor).click();
cy.wait(2000);
});
it("6. Add widget to master, merge then checkout to child branch and verify data", () => {
cy.get(explorer.widgetSwitchId).click();
cy.wait(2000); // wait for transition

View File

@ -1,6 +1,9 @@
import gitSyncLocators from "../../../../../locators/gitSyncLocators";
import homePage from "../../../../../locators/HomePage";
const commonLocators = require("../../../../../locators/commonlocators.json");
import { ObjectsRegistry } from "../../../../../support/Objects/Registry";
const agHelper = ObjectsRegistry.AggregateHelper,
commonLocators = ObjectsRegistry.CommonLocators;
let repoName;
describe("Git sync modal: deploy tab", function() {
@ -49,9 +52,9 @@ describe("Git sync modal: deploy tab", function() {
});
it("post connection app name deploy menu", function() {
cy.get(homePage.applicationName).click();
cy.get(commonLocators.appNameDeployMenu).click();
cy.get(commonLocators.appNameDeployMenuPublish).click();
// deploy
agHelper.GetNClick(commonLocators._publishButton);
cy.get(gitSyncLocators.gitSyncModal);
cy.get(gitSyncLocators.gitSyncModalDeployTab).should(
"have.class",
@ -67,13 +70,12 @@ describe("Git sync modal: deploy tab", function() {
cy.get(gitSyncLocators.closeGitSyncModal).click();
cy.get(homePage.applicationName).click();
cy.get(commonLocators.appNameDeployMenu).click();
cy.get(commonLocators.appNameDeployMenuCurrentVersion).click();
// current deployed version
agHelper.GetNClick(homePage.deployPopupOptionTrigger);
agHelper.AssertElementExist(homePage.currentDeployedPreviewBtn);
cy.get(homePage.applicationName).click();
cy.get(commonLocators.appNameDeployMenu).click();
cy.get(commonLocators.appNameDeployMenuConnectToGit).should("not.exist");
// connect to git
agHelper.AssertElementAbsence(homePage.connectToGitBtn);
});
after(() => {

View File

@ -60,7 +60,7 @@ describe("Git sync apps", function() {
cy.wait("@saveDatasource").should(
"have.nested.property",
"response.body.responseMeta.status",
200,
201,
);
cy.wait("@getDatasourceStructure").should(
@ -187,12 +187,10 @@ describe("Git sync apps", function() {
});
cy.wait(2000);
// clone the page from page settings
cy.xpath("//span[contains(@class,'entity-right-icon')]").click({
force: true,
cy.get(`.t--entity-item:contains(${newPage})`).within(() => {
cy.get(".t--context-menu").click({ force: true });
});
cy.xpath("(//button[@type='button'])")
.eq(9)
.click();
cy.selectAction("Clone");
cy.wait("@clonePage").should(
"have.nested.property",
"response.body.responseMeta.status",

View File

@ -32,6 +32,7 @@ describe("Git sync modal: merge tab", function() {
.should("eq", "true");
cy.get(gitSyncLocators.mergeButton).should("be.disabled");
cy.wait(3000);
cy.get(gitSyncLocators.mergeBranchDropdownDestination).click();
cy.get(commonLocators.dropdownmenu)
.contains(mainBranch)

View File

@ -1,7 +1,10 @@
import homePage from "../../../../../locators/HomePage";
const commonLocators = require("../../../../../locators/commonlocators.json");
import { ObjectsRegistry } from "../../../../../support/Objects/Registry";
import gitSyncLocators from "../../../../../locators/gitSyncLocators";
const agHelper = ObjectsRegistry.AggregateHelper,
commonLocators = ObjectsRegistry.CommonLocators;
describe("Pre git connection spec:", function() {
it("deploy menu at the application dropdown menu", () => {
// create new app
@ -20,18 +23,17 @@ describe("Pre git connection spec:", function() {
});
});
cy.get(homePage.applicationName).click();
cy.get(commonLocators.appNameDeployMenu).click();
cy.get(commonLocators.appNameDeployMenuPublish).click();
// deploy
agHelper.GetNClick(commonLocators._publishButton);
cy.wait("@publishApp");
cy.get(homePage.applicationName).click();
cy.get(commonLocators.appNameDeployMenu).click();
cy.get(commonLocators.appNameDeployMenuCurrentVersion).click();
// current deployed version
agHelper.GetNClick(homePage.deployPopupOptionTrigger);
agHelper.AssertElementExist(homePage.currentDeployedPreviewBtn);
// connect to git
agHelper.GetNClick(homePage.connectToGitBtn);
cy.get(homePage.applicationName).click();
cy.get(commonLocators.appNameDeployMenu).click();
cy.get(commonLocators.appNameDeployMenuConnectToGit).click();
cy.get(gitSyncLocators.gitSyncModal);
cy.contains("Git Connection")
.parent()

View File

@ -1,4 +1,7 @@
import { ObjectsRegistry } from "../../../../../support/Objects/Registry";
const commonlocators = require("../../../../../locators/commonlocators.json");
const appSettings = ObjectsRegistry.AppSettings;
describe("Git with Theming:", function() {
const backgroudColorMaster = "rgb(85, 61, 233)";
@ -29,6 +32,8 @@ describe("Git with Theming:", function() {
});
});
it("Bug #13860 Theming is not getting applied on view mode when the app is connected to Git", function() {
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
// apply theme on master branch and deploy
cy.get(commonlocators.changeThemeBtn).click({ force: true });
@ -45,6 +50,7 @@ describe("Git with Theming:", function() {
.then((text) => {
cy.get(commonlocators.toastmsg).contains(`Theme ${text} Applied`);
});
appSettings.closePane();
// drag a widget and assert theme is applied
cy.dragAndDropToCanvas("buttonwidget", { x: 300, y: 700 });
//cy.get('.t--draggable-buttonwidget').closest("div").should('have.css' , 'background-color', backgroudColorChildBranch)
@ -59,6 +65,8 @@ describe("Git with Theming:", function() {
cy.wait(1000);
cy.get("body").click(300, 300);
// change theme on tempBranch
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
cy.get(commonlocators.changeThemeBtn).click({ force: true });
// select a theme
@ -75,6 +83,7 @@ describe("Git with Theming:", function() {
.then((text) => {
cy.get(commonlocators.toastmsg).contains(`Theme ${text} Applied`);
});
appSettings.closePane();
cy.xpath("(//button[@type='button'])").should(
"have.css",

View File

@ -4,6 +4,7 @@ import { ObjectsRegistry } from "../../../../support/Objects/Registry";
const homePage = ObjectsRegistry.HomePage;
const agHelper = ObjectsRegistry.AggregateHelper;
const dataSources = ObjectsRegistry.DataSources;
const ee = ObjectsRegistry.EntityExplorer;
const apiPage = ObjectsRegistry.ApiPage;
@ -145,4 +146,38 @@ describe("MaintainContext&Focus", function() {
ee.SelectEntityByName("Rest_Api_1");
apiPage.AssertRightPaneSelectedTab("connections");
});
it("8. Datasource edit mode has to be maintained", () => {
ee.SelectEntityByName("Appsmith");
dataSources.EditDatasource();
dataSources.SaveDSFromDialog(false);
ee.SelectEntityByName("Github");
dataSources.AssertViewMode();
ee.SelectEntityByName("Appsmith");
dataSources.AssertEditMode();
});
it("9. Datasource collapse state has to be maintained", () => {
// Create datasource 1
dataSources.SaveDSFromDialog(false);
dataSources.NavigateToDSCreateNew();
dataSources.CreatePlugIn("PostgreSQL");
agHelper.RenameWithInPane("Postgres1", false);
// Expand section with index 1
dataSources.ExpandSection(1);
// Create and switch to datasource 2
dataSources.SaveDSFromDialog(true);
dataSources.NavigateToDSCreateNew();
dataSources.CreatePlugIn("MongoDB");
agHelper.RenameWithInPane("Mongo1", false);
// Validate if section with index 1 is collapsed
dataSources.AssertSectionCollapseState(1, false);
// Switch back to datasource 1
dataSources.SaveDSFromDialog(false);
dataSources.CreateNewQueryInDS("Postgres1");
ee.SelectEntityByName("Postgres1");
dataSources.EditDatasource();
// Validate if section with index 1 is expanded
dataSources.AssertSectionCollapseState(1, false);
});
});

View File

@ -4,7 +4,6 @@ const dsl = require("../../../../fixtures/MultipleWidgetDsl.json");
const globalSearchLocators = require("../../../../locators/GlobalSearch.json");
const datasourceHomeLocators = require("../../../../locators/apiWidgetslocator.json");
const datasourceLocators = require("../../../../locators/DatasourcesEditor.json");
const appPage = require("../../../../locators/PgAdminlocators.json");
describe("GlobalSearch", function() {
before(() => {
@ -87,7 +86,7 @@ describe("GlobalSearch", function() {
it("4. navigatesToDatasourceHavingAQuery", () => {
cy.createPostgresDatasource();
cy.get("@createDatasource").then((httpResponse) => {
cy.get("@saveDatasource").then((httpResponse) => {
const expectedDatasource = httpResponse.response.body.data;
cy.NavigateToActiveDSQueryPane(expectedDatasource.name);
@ -147,17 +146,15 @@ describe("GlobalSearch", function() {
cy.get(globalSearchLocators.createNew).click({ force: true });
cy.get(globalSearchLocators.blankDatasource).click({ force: true });
cy.get(datasourceHomeLocators.createAuthApiDatasource).click();
cy.wait("@createDatasource").should(
"have.nested.property",
"response.body.responseMeta.status",
201,
);
cy.get(datasourceLocators.datasourceTitleLocator).click();
cy.get(`${datasourceLocators.datasourceTitleLocator} input`)
.clear()
.type("omnibarApiDatasource", { force: true })
.blur();
cy.fillAuthenticatedAPIForm();
cy.saveDatasource();
cy.get(globalSearchLocators.createNew).click({ force: true });
cy.contains(
globalSearchLocators.fileOperation,
@ -169,25 +166,19 @@ describe("GlobalSearch", function() {
.then((title) => expect(title).includes("Api"));
});
// since now datasource will only be saved once user clicks on save button explicitly,
// updated test so that when user clicks on google sheet and searches for the same datasource, no
// results found will be shown
it("8. navigatesToGoogleSheetsQuery does not break again: Bug 15012", () => {
cy.createGoogleSheetsDatasource();
cy.renameDatasource("XYZ");
cy.wait(4000);
cy.get(appPage.dropdownChevronLeft).click();
cy.get(commonlocators.globalSearchTrigger).click({ force: true });
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(1000); // modal open transition should be deterministic
cy.get(commonlocators.globalSearchInput).type("XYZ");
cy.get("body").type("{enter}");
cy.get(".t--save-datasource")
.contains("Save and Authorize")
.should("be.visible");
cy.deleteDatasource("XYZ");
// this should be called at the end of the last test case in this spec file.
cy.NavigateToHome();
cy.get(".no-data-title").should("be.visible");
});
});

View File

@ -9,7 +9,7 @@ describe("Undo/Redo functionality", function() {
const modifierKey = Cypress.platform === "darwin" ? "meta" : "ctrl";
let postgresDatasourceName;
it("Checks undo/redo in datasource forms", () => {
it("1. Checks undo/redo in datasource forms", () => {
cy.NavigateToDatasourceEditor();
cy.get(datasource.PostgreSQL).click();
cy.generateUUID().then((uid) => {
@ -46,7 +46,7 @@ describe("Undo/Redo functionality", function() {
cy.get(datasourceEditor.saveBtn).click({ force: true });
});
it("Checks undo/redo for Api pane", function() {
it("2. Checks undo/redo for Api pane", function() {
cy.NavigateToAPI_Panel();
cy.log("Navigation to API Panel screen successful");
cy.CreateAPI("FirstAPI");
@ -85,7 +85,7 @@ describe("Undo/Redo functionality", function() {
);
});
it("Checks undo/redo in query editor", () => {
it("3. Checks undo/redo in query editor", () => {
cy.NavigateToActiveDSQueryPane(postgresDatasourceName);
cy.get(queryLocators.templateMenu).click();
cy.get(".CodeMirror textarea")
@ -127,7 +127,7 @@ describe("Undo/Redo functionality", function() {
cy.get(".CodeMirror-code").should("not.have.text", "{{FirstAPI}}");
});
it("Checks undo/redo in JS Objects", () => {
it("4. Checks undo/redo in JS Objects", () => {
cy.NavigateToJSEditor();
cy.wait(1000);
cy.get(".CodeMirror textarea")
@ -152,7 +152,8 @@ describe("Undo/Redo functionality", function() {
// cy.get(".function-name").should("not.contain.text", "test");
});
it("Checks undo/redo for Authenticated APIs", () => {
//Skipping this since its failing in CI
it.skip("5. Checks undo/redo for Authenticated APIs", () => {
cy.NavigateToAPI_Panel();
cy.get(apiwidget.createAuthApiDatasource).click({ force: true });
cy.wait(2000);
@ -161,6 +162,7 @@ describe("Undo/Redo functionality", function() {
cy.get("body").click(0, 0);
cy.get("body").type(`{${modifierKey}}z`);
cy.get("body").type(`{${modifierKey}}z`);
cy.wait(2000);
cy.get("input[name='url']").should("have.value", "");
cy.get("input[name='headers[0].key']").should("have.value", "");
cy.get("body").type(`{${modifierKey}}{shift}z`);

View File

@ -0,0 +1,25 @@
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
import { checkUrl } from "../../../../support/Pages/AppSettings/Utils";
const appSettings = ObjectsRegistry.AppSettings,
deployMode = ObjectsRegistry.DeployMode,
homePage = ObjectsRegistry.HomePage;
describe("General Settings", () => {
it("App name change updates URL", () => {
appSettings.openPaneFromCta();
appSettings.goToGeneralSettings();
appSettings.general.changeAppNameAndVerifyUrl(true, "myapp");
homePage.GetAppName().then((appName) => {
deployMode.DeployApp();
checkUrl(appName as string, "Page1", undefined, false);
deployMode.NavigateBacktoEditor();
});
});
it("Handles app icon change", () => {
appSettings.openPaneFromCta();
appSettings.goToGeneralSettings();
appSettings.general.changeAppIcon();
});
});

View File

@ -0,0 +1,55 @@
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
import { checkUrl } from "../../../../support/Pages/AppSettings/Utils";
const appSettings = ObjectsRegistry.AppSettings,
ee = ObjectsRegistry.EntityExplorer,
agHelper = ObjectsRegistry.AggregateHelper,
commonLocators = ObjectsRegistry.CommonLocators,
deployMode = ObjectsRegistry.DeployMode,
homePage = ObjectsRegistry.HomePage;
describe("Page Settings", () => {
it("Page name change updates URL", () => {
appSettings.openPaneFromCta();
appSettings.goToPageSettings("Page1");
appSettings.page.changePageNameAndVerifyUrl("Page2");
homePage.GetAppName().then((appName) => {
deployMode.DeployApp();
checkUrl(appName as string, "Page2", undefined, false);
deployMode.NavigateBacktoEditor();
});
cy.wait(2000);
});
it("Custom slug change updates URL", () => {
appSettings.openPaneFromCta();
appSettings.goToPageSettings("Page2");
appSettings.page.changeCustomSlugAndVerifyUrl("custom");
homePage.GetAppName().then((appName) => {
deployMode.DeployApp();
checkUrl(appName as string, "Page2", "custom", false);
deployMode.NavigateBacktoEditor();
});
cy.wait(2000);
});
it("Check default page is updated", () => {
ee.AddNewPage();
appSettings.openPaneFromCta();
appSettings.goToPageSettings("Page3");
appSettings.page.setAsHomePage();
appSettings.page.isHomePage("Page3");
});
it("Check page navigation is updated", () => {
agHelper.GetNClick(commonLocators._previewModeToggle);
agHelper.AssertElementExist(commonLocators._deployedPage);
agHelper.GetNClick(commonLocators._editModeToggle);
appSettings.openPaneFromCta();
appSettings.goToPageSettings("Page2");
appSettings.page.changePageNavigationSetting();
agHelper.GetNClick(commonLocators._previewModeToggle);
agHelper.AssertElementAbsence(commonLocators._deployedPage);
agHelper.GetNClick(commonLocators._editModeToggle);
});
});

View File

@ -5,7 +5,8 @@ const publish = require("../../../../locators/publishWidgetspage.json");
const dsl = require("../../../../fixtures/replay.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
let ee = ObjectsRegistry.EntityExplorer;
const ee = ObjectsRegistry.EntityExplorer,
appSettings = ObjectsRegistry.AppSettings;
describe("App Theming funtionality", function() {
before(() => {
@ -25,6 +26,8 @@ describe("App Theming funtionality", function() {
themesSection(sectionName, themeName) + "/following-sibling::button";
it("1. Checks if theme can be changed to one of the existing themes", function() {
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
cy.get(commonlocators.changeThemeBtn).click({ force: true });
// select a theme
@ -57,6 +60,8 @@ describe("App Theming funtionality", function() {
it("2. Checks if theme can be edited", function() {
cy.get(commonlocators.selectThemeBackBtn).click({ force: true });
appSettings.closePane();
// drop a button widget and click on body
cy.get(explorer.widgetSwitchId).click();
cy.dragAndDropToCanvas("buttonwidget", { x: 200, y: 200 }); //iconbuttonwidget
@ -65,6 +70,9 @@ describe("App Theming funtionality", function() {
.first(0)
.trigger("click", { force: true });
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
//Click the back button //Commenting below since expanded by default
//cy.get(commonlocators.selectThemeBackBtn).click({ force: true });
@ -200,6 +208,7 @@ describe("App Theming funtionality", function() {
cy.wait(200);
cy.get(commonlocators.toastMsg).contains("Theme testtheme Saved");
appSettings.closePane();
});
it("4. Verify Save Theme after changing all properties & widgets conform to the selected theme", () => {
@ -210,6 +219,8 @@ describe("App Theming funtionality", function() {
.first(0)
.trigger("click", { force: true });
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
//#region Change Font & verify widgets:
// cy.contains("Font")
// .click({ force: true })
@ -444,7 +455,7 @@ describe("App Theming funtionality", function() {
// cy.wait(200);
cy.xpath(themesDeletebtn("Your Themes", "testtheme"))
.click()
.click({ force: true })
.wait(200);
cy.contains(
"Do you really want to delete this theme? This process cannot be undone.",
@ -456,14 +467,14 @@ describe("App Theming funtionality", function() {
//Click on Delete theme trash icon & cancel it
cy.xpath(themesDeletebtn("Your Themes", "testtheme"))
.click()
.click({ force: true })
.wait(200);
cy.xpath("//span[text()='Cancel']/parent::a").click();
cy.get(commonlocators.toastMsg).should("not.exist");
//Click on Delete theme trash icon & delete it
cy.xpath(themesDeletebtn("Your Themes", "testtheme"))
.click()
.click({ force: true })
.wait(200);
cy.contains("Delete").click({ force: true });
@ -998,6 +1009,9 @@ describe("App Theming funtionality", function() {
.first(0)
.trigger("click", { force: true });
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
cy.get(commonlocators.changeThemeBtn).click({ force: true });
//Changing to one of featured themes & then changing individual widget properties

View File

@ -1,6 +1,9 @@
const widgetsPage = require("../../../../locators/Widgets.json");
const explorer = require("../../../../locators/explorerlocators.json");
const commonlocators = require("../../../../locators/commonlocators.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
const appSettings = ObjectsRegistry.AppSettings;
describe("Theme validation usecases", function() {
it("Drag and drop button widget, change value and check reset flow", function() {
@ -21,6 +24,8 @@ describe("Theme validation usecases", function() {
// click on canvas to see the theming pane
cy.get("#canvas-selection-0").click({ force: true });
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
// reset theme
cy.contains("Theme Properties")
.closest("div")
@ -40,5 +45,6 @@ describe("Theme validation usecases", function() {
backgroudColor,
);
});
appSettings.closePane();
});
});

View File

@ -1,3 +1,5 @@
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
const testdata = require("../../../../fixtures/testdata.json");
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
const widgetsPage = require("../../../../locators/Widgets.json");
@ -7,6 +9,8 @@ const formWidgetsPage = require("../../../../locators/FormWidgets.json");
const publish = require("../../../../locators/publishWidgetspage.json");
const themelocator = require("../../../../locators/ThemeLocators.json");
const appSettings = ObjectsRegistry.AppSettings;
let themeBackgroudColor;
let themeFont;
@ -28,6 +32,9 @@ describe("Theme validation for default data", function() {
cy.wait(3000);
cy.get(themelocator.canvas).click({ force: true });
cy.wait(2000);
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
//Border validation
//cy.contains("Border").click({ force: true });
cy.get(themelocator.border).should("have.length", "3");
@ -52,7 +59,7 @@ describe("Theme validation for default data", function() {
cy.wait(250);
cy.get(themelocator.fontsSelected)
.eq(0)
.eq(10)
.should("have.text", "Nunito Sans");
});
cy.contains("Font").click({ force: true });
@ -64,6 +71,7 @@ describe("Theme validation for default data", function() {
cy.validateColor(0, "#553DE9");
cy.colorMouseover(1, "Background Color");
cy.validateColor(1, "#F8FAFC");
appSettings.closePane();
});
it("Validate Default Theme change across application", function() {
@ -85,6 +93,8 @@ describe("Theme validation for default data", function() {
.should("have.css", "background-color")
.and("eq", "rgb(21, 128, 61)");
cy.get("#canvas-selection-0").click({ force: true });
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
//Change the Theme
cy.get(commonlocators.changeThemeBtn).click({ force: true });
cy.get(".cursor-pointer:contains('Applied Theme')").click({ force: true });

View File

@ -1,9 +1,13 @@
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
const widgetsPage = require("../../../../locators/Widgets.json");
const explorer = require("../../../../locators/explorerlocators.json");
const commonlocators = require("../../../../locators/commonlocators.json");
const formWidgetsPage = require("../../../../locators/FormWidgets.json");
const themelocator = require("../../../../locators/ThemeLocators.json");
const appSettings = ObjectsRegistry.AppSettings;
let themeBackgroudColor;
let themeFont;
@ -26,6 +30,8 @@ describe("Theme validation usecases", function() {
cy.get(themelocator.canvas).click({ force: true });
cy.wait(2000);
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
//Border validation
//cy.contains("Border").click({ force: true });
cy.get(themelocator.border).should("have.length", "3");
@ -69,7 +75,7 @@ describe("Theme validation usecases", function() {
});
cy.get(themelocator.fontsSelected)
.eq(0)
.eq(10)
.should("have.text", "Nunito Sans");
cy.get(".ads-dropdown-options-wrapper div")
@ -131,6 +137,7 @@ describe("Theme validation usecases", function() {
cy.get(themelocator.inputColor).should("have.value", "Black");
cy.wait(2000);
cy.contains("Color").click({ force: true });
appSettings.closePane();
});
it("2. Publish the App and validate Font across the app", function() {
@ -177,6 +184,9 @@ describe("Theme validation usecases", function() {
.should("have.css", "background-color")
.and("eq", "rgb(21, 128, 61)");
cy.get("#canvas-selection-0").click({ force: true });
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
//Change the Theme
cy.get(commonlocators.changeThemeBtn).click({ force: true });
cy.get(themelocator.currentTheme).click({ force: true });
@ -190,6 +200,7 @@ describe("Theme validation usecases", function() {
.then((selectedBackgroudColor) => {
expect(CurrentBackgroudColor).to.equal(selectedBackgroudColor);
themeBackgroudColor = CurrentBackgroudColor;
appSettings.closePane();
});
});
});
@ -236,6 +247,8 @@ describe("Theme validation usecases", function() {
cy.get("#canvas-selection-0").click({ force: true });
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
//Change the Theme
cy.get(commonlocators.changeThemeBtn).click({ force: true });
// select a theme
@ -283,6 +296,7 @@ describe("Theme validation usecases", function() {
.then((selectedBackgroudColor) => {
expect(CurrentBackgroudColor).to.equal(selectedBackgroudColor);
themeBackgroudColor = CurrentBackgroudColor;
appSettings.closePane();
});
});
cy.get(formWidgetsPage.formD).click();

View File

@ -7,7 +7,8 @@ let themeBackgroudColor;
let themeFont;
let themeColour;
let propPane = ObjectsRegistry.PropertyPane,
ee = ObjectsRegistry.EntityExplorer;
ee = ObjectsRegistry.EntityExplorer,
appSettings = ObjectsRegistry.AppSettings;
describe("Theme validation usecase for multi-select widget", function() {
it("1. Drag and drop multi-select widget and validate Default font and list of font validation + Bug 15007", function() {
@ -16,6 +17,8 @@ describe("Theme validation usecase for multi-select widget", function() {
cy.get(themelocator.canvas).click({ force: true });
cy.wait(2000);
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
//Border validation
//cy.contains("Border").click({ force: true });
cy.get(themelocator.border).should("have.length", "3");
@ -60,7 +63,7 @@ describe("Theme validation usecase for multi-select widget", function() {
});
cy.get(themelocator.fontsSelected)
.eq(0)
.eq(10)
.should("have.text", "Nunito Sans");
cy.get(".ads-dropdown-options-wrapper div")
@ -94,6 +97,7 @@ describe("Theme validation usecase for multi-select widget", function() {
cy.get(themelocator.inputColor).should("have.value", "brown");
cy.wait(1000);
cy.contains("Color").click({ force: true });
appSettings.closePane();
});
it.skip("2. Publish the App and validate Font across the app + Bug 15007", function() {
@ -120,6 +124,8 @@ describe("Theme validation usecase for multi-select widget", function() {
it("3. Validate current theme feature", function() {
cy.get("#canvas-selection-0").click({ force: true });
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
//Change the Theme
cy.get(commonlocators.changeThemeBtn).click({ force: true });
cy.get(themelocator.currentTheme).click({ force: true });
@ -134,6 +140,7 @@ describe("Theme validation usecase for multi-select widget", function() {
expect("rgba(0, 0, 0, 0)").to.equal(selectedBackgroudColor);
themeBackgroudColor = CurrentBackgroudColor;
themeColour = selectedBackgroudColor;
appSettings.closePane();
});
});
});

View File

@ -69,11 +69,6 @@ describe("Button Widget Functionality", function() {
.should("have.value", postgresDatasourceName)
.blur();
cy.wait("@saveDatasource").should(
"have.nested.property",
"response.body.responseMeta.status",
200,
);
cy.fillPostgresDatasourceForm();
cy.saveDatasource();
cy.NavigateToActiveDSQueryPane(postgresDatasourceName);

View File

@ -84,11 +84,11 @@ describe("Dropdown Widget Functionality", function() {
.should("have.value", postgresDatasourceName)
.blur();
cy.wait("@saveDatasource").should(
"have.nested.property",
"response.body.responseMeta.status",
200,
);
// cy.wait("@saveDatasource").should(
// "have.nested.property",
// "response.body.responseMeta.status",
// 201,
// );
cy.fillPostgresDatasourceForm();
cy.saveDatasource();
cy.NavigateToActiveDSQueryPane(postgresDatasourceName);

View File

@ -1,7 +1,11 @@
import { ObjectsRegistry } from "../../../../../support/Objects/Registry";
const commonlocators = require("../../../../../locators/commonlocators.json");
const themeLocator = require("../../../../../locators/ThemeLocators.json");
const dsl = require("../../../../../fixtures/filePickerV2WidgetReskinDsl.json");
const appSettings = ObjectsRegistry.AppSettings;
describe("Checkbox Widget Functionality", function() {
before(() => {
cy.addDsl(dsl);
@ -11,9 +15,12 @@ describe("Checkbox Widget Functionality", function() {
// Click on canvas to get global theme settings
cy.get(commonlocators.canvas).click({ force: true });
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
cy.get(commonlocators.themeAppBorderRadiusBtn)
.last()
.click();
appSettings.closePane();
cy.get(commonlocators.filepickerv2).click();
@ -54,9 +61,12 @@ describe("Checkbox Widget Functionality", function() {
// Change the theme border radius to M and check if the remove file icon's border radius is 4px;
cy.get(commonlocators.canvas).click({ force: true });
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
cy.get(commonlocators.themeAppBorderRadiusBtn)
.eq(1)
.click();
appSettings.closePane();
cy.get(commonlocators.filepickerv2).click();
@ -75,6 +85,8 @@ describe("Checkbox Widget Functionality", function() {
// Change the global theme primary color
cy.get(commonlocators.canvas).click({ force: true });
cy.wait(300);
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
cy.get(themeLocator.inputColor).click({ force: true });
cy.get(".t--colorpicker-v2-color")
@ -82,6 +94,7 @@ describe("Checkbox Widget Functionality", function() {
.click({ force: true })
.then(($elem) => {
const primaryColor = $elem.css("background-color");
appSettings.closePane();
cy.get(commonlocators.filepickerv2).click();
cy.get(".uppy-StatusBar-actionBtn--upload").should(
"have.css",
@ -105,10 +118,13 @@ describe("Checkbox Widget Functionality", function() {
cy.get(".uppy-Dashboard-close").click({ force: true });
cy.get(commonlocators.canvas).click({ force: true });
cy.wait(300);
appSettings.openPaneFromCta();
appSettings.goToThemeSettings();
cy.get(themeLocator.fontsSelected).click({ force: true });
cy.contains("Roboto").click({ force: true });
appSettings.closePane();
cy.get(commonlocators.filepickerv2).click();
cy.get(".uppy-DashboardContent-back").should(

View File

@ -8,7 +8,7 @@ describe("Divider Widget Functionality", function() {
it("Add new Divider", () => {
cy.get(explorer.addWidget).click();
cy.dragAndDropToCanvas("dividerwidget", { x: 300, y: 300 });
cy.dragAndDropToCanvas("dividerwidget", { x: 320, y: 300 });
cy.get(".t--divider-widget").should("exist");
});

View File

@ -1,5 +1,7 @@
const dsl = require("../../../../../fixtures/menuButtonDsl.json");
const formWidgetsPage = require("../../../../../locators/FormWidgets.json");
const commonlocators = require("../../../../../locators/commonlocators.json");
const { modifierKey } = require("../../../../../support/Constants");
describe("Menu Button Widget Functionality", () => {
before(() => {
@ -76,7 +78,7 @@ describe("Menu Button Widget Functionality", () => {
.contains("Third Menu Item");
// Undo
cy.get("body").type("{ctrl+z}");
cy.get("body").type(`{${modifierKey}}+z`);
// Check first menu item
cy.get(".bp3-menu-item")
.eq(0)
@ -102,4 +104,115 @@ describe("Menu Button Widget Functionality", () => {
// Navigate Back
cy.get(".t--property-pane-back-btn").click();
});
it("3. MenuButton widget functionality to add dynamic menu items", function() {
cy.openPropertyPane("menubuttonwidget");
cy.moveToContentTab();
// Select menu items source as Dynamic
cy.get(`${commonlocators.menuButtonMenuItemsSource} .t--button-tab-DYNAMIC`)
.last()
.click({
force: true,
});
cy.wait(200);
// Add sample source data
cy.testJsontext(
"sourcedata",
JSON.stringify(this.data.MenuButtonSourceData),
);
// Open configure array item panel
cy.get(commonlocators.menuButtonConfigureArrayItems).click({
force: true,
});
// Update label binding
cy.testJsontext("label", `{{currentItem.first_name}}`);
cy.wait(1000);
cy.closePropertyPane();
// Check if a total of 3 menu items have been added
cy.get(`${formWidgetsPage.menuButtonWidget} button`).click({
force: true,
});
cy.wait(500);
cy.get(".bp3-menu-item")
.eq(0)
.contains("Michael");
cy.get(".bp3-menu-item")
.eq(1)
.contains("Lindsay");
cy.get(".bp3-menu-item")
.eq(2)
.contains("Brock");
cy.closePropertyPane();
});
it("4. Disable one dynamic item using {{currentItem}} binding", function() {
cy.openPropertyPane("menubuttonwidget");
cy.moveToContentTab();
// Open configure array item panel
cy.get(commonlocators.menuButtonConfigureArrayItems).click({
force: true,
});
// Update disabled JS binding
cy.get(commonlocators.Disablejs)
.find(".t--js-toggle")
.first()
.click({ force: true });
cy.testJsontext("disabled", `{{currentItem.first_name === "Lindsay"}}`);
cy.wait(1000);
// Check if the 2nd item is disabled
cy.get(`${formWidgetsPage.menuButtonWidget} button`).click({
force: true,
});
cy.wait(500);
cy.get(".bp3-menu-item")
.eq(1)
.should("have.class", "bp3-disabled");
cy.closePropertyPane();
});
it("5. Apply background color to dynamic items using {{currentItem}} binding", function() {
cy.openPropertyPane("menubuttonwidget");
cy.moveToContentTab();
// Open configure array item panel
cy.get(commonlocators.menuButtonConfigureArrayItems).click({
force: true,
});
cy.moveToStyleTab();
// Update disabled JS binding
cy.get(".t--property-control-backgroundcolor .t--js-toggle").click();
cy.updateCodeInput(
".t--property-control-backgroundcolor",
`{{currentItem.first_name === "Michael" ? "rgb(255, 165, 0)" : "rgb(0, 128, 0)"}}`,
);
cy.wait(1000);
cy.get(`${formWidgetsPage.menuButtonWidget} button`).click({
force: true,
});
cy.wait(500);
// Check if the 1st item has orange background color
cy.get(".bp3-menu-item")
.eq(0)
.should("have.css", "background-color", "rgb(255, 165, 0)");
// Check if the 3rd item has green background color
cy.get(".bp3-menu-item")
.eq(2)
.should("have.css", "background-color", "rgb(0, 128, 0)");
});
});

View File

@ -0,0 +1,28 @@
const dsl = require("../../../../../fixtures/dynamicHeightStatboxdsl.json");
const explorer = require("../../../../../locators/explorerlocators.json");
const data = require("../../../../../fixtures/example.json");
const widgetsPage = require("../../../../../locators/Widgets.json");
import { ObjectsRegistry } from "../../../../../support/Objects/Registry";
const agHelper = ObjectsRegistry.AggregateHelper;
describe("Statbox Widget Functionality", function() {
afterEach(() => {
agHelper.SaveLocalStorageCache();
});
beforeEach(() => {
agHelper.RestoreLocalStorageCache();
cy.addDsl(dsl);
});
it("Verify Statbox can be placed inside another widget", () => {
cy.get(explorer.addWidget).click();
// placing statbox widget inside container widget
cy.dragAndDropToWidget("statboxwidget", "containerwidget", {
x: 100,
y: 100,
});
cy.openPropertyPaneWithIndex("statboxwidget",1);
cy.openPropertyPaneWithIndex("statboxwidget",0);
});
});

View File

@ -86,15 +86,4 @@ describe("Statbox Widget Functionality", function() {
parseSpecialCharSequences: false,
});
});
it("5. Verify Statbox can be placed inside another widget", () => {
cy.addDsl(dsl1);
cy.get(explorer.addWidget).click();
// placing statbox widget inside container widget
//cy.dragAndDropToCanvas("containerwidget", { x: 500, y: 300 });
cy.dragAndDropToWidget("statboxwidget", "containerwidget", {
x: 100,
y: 100,
});
});
});

View File

@ -41,7 +41,7 @@ describe("RichTextEditor Widget Functionality", function() {
cy.openPropertyPane("richtexteditorwidget");
});
it("RichTextEditor-Edit Text area with HTML body functionality", function() {
it("1. RichTextEditor-Edit Text area with HTML body functionality", function() {
//changing the Text Name
cy.widgetText(
this.data.RichTextEditorName,
@ -66,7 +66,7 @@ describe("RichTextEditor Widget Functionality", function() {
);
});
it("RichTextEditor-Enable Validation", function() {
it("2. RichTextEditor-Enable Validation", function() {
//Uncheck the Disabled checkbox
cy.UncheckWidgetProperties(formWidgetsPage.disableJs);
cy.validateEnableWidget(
@ -81,7 +81,7 @@ describe("RichTextEditor Widget Functionality", function() {
);
});
it("RichTextEditor-Disable Validation", function() {
it("3. RichTextEditor-Disable Validation", function() {
//Check the Disabled checkbox
cy.CheckWidgetProperties(formWidgetsPage.disableJs);
cy.validateDisableWidget(
@ -96,21 +96,21 @@ describe("RichTextEditor Widget Functionality", function() {
);
});
it("RichTextEditor-check Visible field validation", function() {
it("4. RichTextEditor-check Visible field validation", function() {
// Uncheck the visible checkbox
cy.UncheckWidgetProperties(commonlocators.visibleCheckbox);
cy.PublishtheApp();
cy.get(publishPage.richTextEditorWidget).should("not.exist");
});
it("RichTextEditor-uncheck Visible field validation", function() {
it("5. RichTextEditor-uncheck Visible field validation", function() {
// Check the visible checkbox
cy.CheckWidgetProperties(commonlocators.visibleCheckbox);
cy.PublishtheApp();
cy.get(publishPage.richTextEditorWidget).should("be.visible");
});
it("RichTextEditor-check Hide toolbar field validation", function() {
it("6. RichTextEditor-check Hide toolbar field validation", function() {
// Check the Hide toolbar checkbox
cy.CheckWidgetProperties(commonlocators.hideToolbarCheckbox);
cy.validateToolbarHidden(
@ -124,7 +124,7 @@ describe("RichTextEditor Widget Functionality", function() {
);
});
it("RichTextEditor-uncheck Hide toolbar field validation", function() {
it("7. RichTextEditor-uncheck Hide toolbar field validation", function() {
// Uncheck the Hide toolbar checkbox
cy.UncheckWidgetProperties(commonlocators.hideToolbarCheckbox);
cy.validateToolbarVisible(
@ -138,7 +138,7 @@ describe("RichTextEditor Widget Functionality", function() {
);
});
it("Reset RichTextEditor", function() {
it("8. Reset RichTextEditor", function() {
// Enable the widget
cy.UncheckWidgetProperties(formWidgetsPage.disableJs);
@ -159,7 +159,7 @@ describe("RichTextEditor Widget Functionality", function() {
);
});
it("Check isDirty meta property", function() {
it("9. Check isDirty meta property", function() {
cy.openPropertyPane("textwidget");
cy.updateCodeInput(
".t--property-control-text",
@ -194,7 +194,7 @@ describe("RichTextEditor Widget Functionality", function() {
cy.get(".t--widget-textwidget").should("contain", "false");
});
it("Check if the binding is getting removed from the text and the RTE widget", function() {
it("10. Check if the binding is getting removed from the text and the RTE widget", function() {
cy.openPropertyPane("textwidget");
cy.updateCodeInput(".t--property-control-text", `{{RichtextEditor.text}}`);
// Change defaultText of the RTE
@ -213,7 +213,7 @@ describe("RichTextEditor Widget Functionality", function() {
cy.get(".t--widget-textwidget").should("contain", "");
});
it("Check if text does not re-appear when cut, inside the RTE widget", function() {
it("11. Check if text does not re-appear when cut, inside the RTE widget", function() {
cy.window().then((win) => {
const tinyMceId = "rte-6h8j08u7ea";
@ -233,7 +233,7 @@ describe("RichTextEditor Widget Functionality", function() {
});
});
it("Check if the cursor position is at the end for the RTE widget", function() {
it("12. Check if the cursor position is at the end for the RTE widget", function() {
const tinyMceId = "rte-6h8j08u7ea";
const testString = "Test Content";
const testStringLen = testString.length;
@ -252,7 +252,7 @@ describe("RichTextEditor Widget Functionality", function() {
cy.get(".t--button-tab-html").click({ force: true });
});
it("Check if different font size texts are supported inside the RTE widget", function() {
it("13. Check if different font size texts are supported inside the RTE widget", function() {
const tinyMceId = "rte-6h8j08u7ea";
const testString = "Test Content";
@ -274,15 +274,15 @@ describe("RichTextEditor Widget Functionality", function() {
});
});
it("Check if button for Underline exists within the Toolbar of RTE widget", () => {
it("14. Check if button for Underline exists within the Toolbar of RTE widget", () => {
cy.get('[aria-label="Underline"]').should("exist");
});
it("Check if button for Background Color is rendered only once within the Toolbar of RTE widget", () => {
it("15. Check if button for Background Color is rendered only once within the Toolbar of RTE widget", () => {
cy.get('[aria-label="Background color"]').should("have.length", 1);
});
it("Check if button for Text Color is rendered only once within the Toolbar of RTE widget", () => {
it("16. Check if button for Text Color is rendered only once within the Toolbar of RTE widget", () => {
cy.get('[aria-label="Text color"]').should("have.length", 1);
});

View File

@ -3,6 +3,10 @@ const widgetsPage = require("../../../../../locators/Widgets.json");
const commonlocators = require("../../../../../locators/commonlocators.json");
const publish = require("../../../../../locators/publishWidgetspage.json");
const dsl = require("../../../../../fixtures/tableV2WidgetDsl.json");
import { ObjectsRegistry } from "../../../../../support/Objects/Registry";
const table = ObjectsRegistry.TableV2;
const PropPane = ObjectsRegistry.PropertyPane;
describe("Table Widget V2 Functionality", function() {
before(() => {
@ -116,10 +120,132 @@ describe("Table Widget V2 Functionality", function() {
const tabValue = tabData;
expect(tabValue).not.to.be.equal("Tobias Funke");
});
cy.get(publish.backToEditor).click({
force: true,
});
});
it("5. should check that adding cyclic dependency in the table doesn't crash the app", () => {
cy.get(publish.backToEditor).click();
it("5. Verify that table filter dropdown only includes filterable columns", () => {
cy.openPropertyPane("tablewidgetv2");
cy.wait(500);
PropPane.UpdatePropertyFieldValue("Table Data", `{{[{step: 1, task: 1}]}}`);
cy.get(
".t--property-control-allowfiltering .bp3-control-indicator",
).click();
cy.editColumn("step");
cy.get(".t--table-filter-toggle-btn").click();
[
{
columnType: "URL",
expected: "contain",
},
{
columnType: "Number",
expected: "contain",
},
{
columnType: "Date",
expected: "contain",
},
{
columnType: "Image",
expected: "not.contain",
},
{
columnType: "Video",
expected: "not.contain",
},
{
columnType: "Button",
expected: "not.contain",
},
{
columnType: "Menu Button",
expected: "not.contain",
},
{
columnType: "Icon Button",
expected: "not.contain",
},
{
columnType: "Plain Text",
expected: "contain",
},
{
columnType: "Checkbox",
expected: "contain",
},
{
columnType: "Switch",
expected: "contain",
},
].forEach((data) => {
cy.get(commonlocators.changeColType)
.last()
.click();
cy.get(".t--dropdown-option")
.children()
.contains(data.columnType)
.click();
cy.wait("@updateLayout");
cy.get(".t--table-filter-columns-dropdown").click();
cy.get(".t--dropdown-option").should(data.expected, "step");
});
cy.get(".t--property-pane-back-btn").click();
cy.makeColumnEditable("step");
cy.get(".t--button-tab-ROW_LEVEL").click();
cy.get(".t--table-filter-columns-dropdown").click();
cy.get(".t--dropdown-option").should("not.contain", "Save / Discard");
});
it("6. Verify that table filter is retained when the tableData scehma doesn't change", () => {
cy.openPropertyPane("tablewidgetv2");
PropPane.UpdatePropertyFieldValue(
"Table Data",
`{{[{number: "1", work: "test"}, {number: "2", work: "celebrate!"}]}}`,
);
table.OpenNFilterTable("number", "contains", "2");
cy.get(".t--table-filter-toggle-btn").should("have.text", "Filters (1)");
cy.readTableV2data(0, 1).then((val) => {
expect(val).to.equal("2");
});
PropPane.UpdatePropertyFieldValue(
"Table Data",
`{{[{number: "1.1", work: "test"}, {number: "2", work: "celebrate!"}]}}`,
);
cy.get(".t--table-filter-toggle-btn").should("have.text", "Filters (1)");
cy.readTableV2data(0, 1).then((val) => {
expect(val).to.equal("2");
});
cy.get(".t--close-filter-btn").click({ force: true });
PropPane.UpdatePropertyFieldValue(
"Table Data",
`{{[{number: "1.1", task: "test"}, {number: "2", task: "celebrate!"}]}}`,
);
cy.get(".t--table-filter-toggle-btn").should("have.text", "Filters");
cy.readTableV2data(0, 1).then((val) => {
expect(val).to.equal("1.1");
});
table.OpenNFilterTable("number", "contains", "2");
cy.get(".t--table-filter-toggle-btn").should("have.text", "Filters (1)");
cy.readTableV2data(0, 1).then((val) => {
expect(val).to.equal("2");
});
cy.get(".t--close-filter-btn").click({ force: true });
PropPane.UpdatePropertyFieldValue(
"Table Data",
`{{[{number: "1", task: "test"}, {number: "2", task: "celebrate!"}]}}`,
);
cy.get(".t--table-filter-toggle-btn").should("have.text", "Filters (1)");
cy.readTableV2data(0, 1).then((val) => {
expect(val).to.equal("2");
});
});
it("7. should check that adding cyclic dependency in the table doesn't crash the app", () => {
//cy.get(publish.backToEditor).click();
cy.openPropertyPane("tablewidgetv2");
cy.updateCodeInput(".t--property-control-defaultselectedrow", `{{Table1}}`);

View File

@ -48,6 +48,7 @@ describe("Create new workspace and invite user & validate all roles", () => {
cy.wait(2000);
cy.xpath(HomePage.selectRole).click();
cy.get(".t--dropdown-option")
// .should("have.length", Cypress.env("Edition") === 1 ? 1 : 2)
.should("have.length", 1)
.and("contain.text", `App Viewer - ${workspaceId}`);
cy.get(HomePage.closeBtn).click();
@ -86,6 +87,7 @@ describe("Create new workspace and invite user & validate all roles", () => {
cy.wait(2000);
cy.xpath(HomePage.selectRole).click();
cy.get(".t--dropdown-option")
// .should("have.length", Cypress.env("Edition") === 0 ? 2 : 3)
.should("have.length", 2)
.and(
"contain.text",
@ -134,6 +136,7 @@ describe("Create new workspace and invite user & validate all roles", () => {
cy.wait(2000);
cy.xpath(HomePage.selectRole).click();
cy.get(".t--dropdown-option")
// .should("have.length", Cypress.env("Edition") === 0 ? 3 : 4)
.should("have.length", 3)
.should(
"contain.text",

View File

@ -1,13 +1,9 @@
const datasource = require("../../../../locators/DatasourcesEditor.json");
const datasourceEditor = require("../../../../locators/DatasourcesEditor.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
let agHelper = ObjectsRegistry.AggregateHelper,
dataSources = ObjectsRegistry.DataSources;
let datasourceName;
describe("Arango datasource test cases", function() {
beforeEach(() => {
cy.startRoutesForDatasource();
@ -18,9 +14,6 @@ describe("Arango datasource test cases", function() {
dataSources.CreatePlugIn("ArangoDB");
agHelper.RenameWithInPane("ArangoWithnoTrailing", false);
cy.fillArangoDBDatasourceForm();
cy.get("@createDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
cy.intercept("POST", "/api/v1/datasources/test", {
fixture: "testAction.json",
}).as("testDatasource");
@ -37,12 +30,10 @@ describe("Arango datasource test cases", function() {
fixture: "testAction.json",
}).as("testDatasource");
cy.testSaveDatasource(false);
//dataSources.DeleteDatasouceFromActiveTab("ArangoWithTrailing");
});
it("3. Create a new query from the datasource editor", function() {
// cy.get(datasource.createQuery).click();
cy.get(`${datasourceEditor.datasourceCard} ${datasource.createQuery}`)
cy.get(datasource.createQuery)
.last()
.click();
cy.wait("@createNewApi").should(
@ -60,6 +51,6 @@ describe("Arango datasource test cases", function() {
agHelper
.GetText(dataSources._databaseName, "val")
.then(($dbName) => expect($dbName).to.eq("_system"));
dataSources.DeleteDSDirectly();
dataSources.SaveDSFromDialog(false);
});
});

View File

@ -14,11 +14,6 @@ describe("Authenticated API Datasource", function() {
it("1. Bug: 12045 - No Blank screen diplay after New Authentication API datasource creation", function() {
cy.NavigateToAPI_Panel();
cy.get(apiwidget.createAuthApiDatasource).click();
cy.wait("@createDatasource").should(
"have.nested.property",
"response.body.responseMeta.status",
201,
);
cy.renameDatasource("FakeAuthenticatedApi");
cy.fillAuthenticatedAPIForm();
cy.saveDatasource();
@ -28,7 +23,7 @@ describe("Authenticated API Datasource", function() {
it("2. Bug: 12045 - No Blank screen diplay after editing/opening existing Authentication API datasource", function() {
cy.xpath("//span[text()='EDIT']/parent::a").click();
cy.get(datasourceEditor.url).type("/users");
cy.saveDatasource();
cy.get(".t--save-datasource").click({ force: true });
cy.contains(URL + "/users");
cy.deleteDatasource("FakeAuthenticatedApi");
});
@ -36,11 +31,6 @@ describe("Authenticated API Datasource", function() {
it("3. Bug: 14181 -Make sure the datasource view mode page does not contain labels with no value.", function() {
cy.NavigateToAPI_Panel();
cy.get(apiwidget.createAuthApiDatasource).click();
cy.wait("@createDatasource").should(
"have.nested.property",
"response.body.responseMeta.status",
201,
);
cy.renameDatasource("FakeAuthenticatedApi");
cy.fillAuthenticatedAPIForm();
cy.saveDatasource();

View File

@ -1,7 +1,9 @@
const testdata = require("../../../../fixtures/testdata.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
let agHelper = ObjectsRegistry.AggregateHelper;
let agHelper = ObjectsRegistry.AggregateHelper,
dataSource = ObjectsRegistry.DataSources,
locator = ObjectsRegistry.CommonLocators;
describe("Datasource form related tests", function() {
beforeEach(() => {
@ -16,7 +18,10 @@ describe("Datasource form related tests", function() {
cy.get(".t--store-as-datasource")
.trigger("click")
.wait(1000);
agHelper.ValidateToastMessage("datasource created"); //verifying there is no error toast, Bug 14566
agHelper.AssertElementAbsence(
locator._specificToast("Duplicate key error"),
); //verifying there is no error toast, Bug 14566
cy.get(".t--add-field")
.first()
@ -26,6 +31,7 @@ describe("Datasource form related tests", function() {
it("2. Check if save button is disabled", function() {
cy.get(".t--save-datasource").should("not.be.disabled");
dataSource.SaveDSFromDialog();
});
it("3. Check if saved api as a datasource does not fail on cloning", function() {
@ -36,6 +42,6 @@ describe("Datasource form related tests", function() {
cy.hoverAndClickParticularIndex(1);
cy.get('.single-select:contains("Copy to page")').click();
cy.get('.single-select:contains("Page1")').click({ force: true });
cy.validateToastMessage("action copied to page Page1 successfully");
agHelper.AssertContains("action copied to page Page1 successfully");
});
});

View File

@ -1,12 +1,12 @@
const testdata = require("../../../../fixtures/testdata.json");
const datasource = require("../../../../locators/DatasourcesEditor.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
const agHelper = ObjectsRegistry.AggregateHelper,
dataSources = ObjectsRegistry.DataSources;
describe("Datasource form related tests", function() {
it("1. Verify datasource structure refresh on save", () => {
it("1. Verify datasource structure refresh on save - invalid datasource", () => {
agHelper.GenerateUUID();
cy.get("@guid").then((uid) => {
const guid = uid;
@ -17,12 +17,10 @@ describe("Datasource form related tests", function() {
agHelper.RenameWithInPane(dataSourceName, false);
dataSources.FillPostgresDSForm(false, "docker", "wrongPassword");
dataSources.verifySchema("Failed to initialize pool");
cy.get(dataSources._activeDS)
.contains(dataSourceName)
.click();
cy.get(datasource.editDatasource).click();
dataSources.updatePassword("docker");
dataSources.verifySchema("public.");
dataSources.DeleteDatasouceFromActiveTab(dataSourceName);
dataSources.verifySchema("public.", true);
dataSources.DeleteDatasouceFromWinthinDS(dataSourceName);
});
});
});

View File

@ -1,6 +1,8 @@
const datasource = require("../../../../locators/DatasourcesEditor.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
let elasticSearchName;
let dataSource = ObjectsRegistry.DataSources;
describe("Elastic search datasource tests", function() {
beforeEach(() => {
@ -12,7 +14,6 @@ describe("Elastic search datasource tests", function() {
cy.get(datasource.ElasticSearch).trigger("click", { force: true });
cy.generateUUID().then((uid) => {
elasticSearchName = uid;
cy.get(".t--edit-datasource-name").click();
cy.get(".t--edit-datasource-name input")
.clear()
@ -20,14 +21,11 @@ describe("Elastic search datasource tests", function() {
.should("have.value", elasticSearchName)
.blur();
});
cy.wait("@saveDatasource").should(
"have.nested.property",
"response.body.responseMeta.status",
200,
);
cy.fillElasticDatasourceForm();
//once we have test values for elastic search we can test and save the datasources.
// cy.testSaveDatasource();
dataSource.SaveDSFromDialog(false);
});
});

View File

@ -12,8 +12,8 @@ describe("Google Sheets datasource test cases", function() {
"Read, Edit and Create Files",
"Read, Edit, Create and Delete Files",
]);
dataSources.DeleteDSDirectly();
});
dataSources.SaveDSFromDialog(false);
});
function VerifyFunctionDropdown(scopeOptions: string[]) {
agHelper.GetNClick(dataSources._gsScopeDropdown);

View File

@ -5,14 +5,14 @@ describe("Create, test, save then delete a mongo datasource", function() {
cy.startRoutesForDatasource();
});
it("Create, test, save then delete a mongo datasource", function() {
it("1. Create, test, save then delete a mongo datasource", function() {
cy.NavigateToDatasourceEditor();
cy.get(datasource.MongoDB).click();
cy.fillMongoDatasourceForm();
cy.testSaveDeleteDatasource();
});
it("Create with trailing white spaces in host address and database name, test, save then delete a mongo datasource", function() {
it("2. Create with trailing white spaces in host address and database name, test, save then delete a mongo datasource", function() {
cy.NavigateToDatasourceEditor();
cy.get(datasource.MongoDB).click();
cy.fillMongoDatasourceForm(true); //fills form with trailing white spaces

View File

@ -1,6 +1,7 @@
const datasource = require("../../../../locators/DatasourcesEditor.json");
const datasourceEditor = require("../../../../locators/DatasourcesEditor.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
let dataSource = ObjectsRegistry.DataSources;
let datasourceName;
describe("MsSQL datasource test cases", function() {
@ -15,33 +16,31 @@ describe("MsSQL datasource test cases", function() {
cy.generateUUID().then((UUID) => {
datasourceName = `MsSQL MOCKDS ${UUID}`;
cy.renameDatasource(datasourceName);
cy.intercept("POST", "/api/v1/datasources/test", {
fixture: "testAction.json",
}).as("testDatasource");
cy.testSaveDatasource(false);
dataSource.DeleteDatasouceFromActiveTab(datasourceName);
});
cy.get("@createDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
cy.intercept("POST", "/api/v1/datasources/test", {
fixture: "testAction.json",
}).as("testDatasource");
cy.testSaveDatasource(false);
});
it("2. Create with trailing white spaces in host address and database name, test, save then delete a MsSQL datasource", function() {
cy.NavigateToDatasourceEditor();
cy.get(datasource.MsSQL).click();
cy.fillMsSQLDatasourceForm(true);
cy.get("@createDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
cy.intercept("POST", "/api/v1/datasources/test", {
fixture: "testAction.json",
}).as("testDatasource");
cy.testSaveDatasource(false);
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = JSON.stringify(
httpResponse.response.body.data.name,
).replace(/['"]+/g, "");
});
});
it("3. Create a new query from the datasource editor", function() {
// cy.get(datasource.createQuery).click();
cy.get(`${datasourceEditor.datasourceCard} ${datasource.createQuery}`)
cy.get(datasource.createQuery)
.last()
.click();
cy.wait("@createNewApi").should(
@ -49,9 +48,7 @@ describe("MsSQL datasource test cases", function() {
"response.body.responseMeta.status",
201,
);
cy.deleteQueryUsingContext();
cy.deleteDatasource(datasourceName);
});
});

View File

@ -1,6 +1,6 @@
const datasource = require("../../../../locators/DatasourcesEditor.json");
const queryEditor = require("../../../../locators/QueryEditor.json");
const datasourceEditor = require("../../../../locators/DatasourcesEditor.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
let dataSource = ObjectsRegistry.DataSources;
let datasourceName;
@ -16,33 +16,31 @@ describe("MySQL datasource test cases", function() {
cy.generateUUID().then((UUID) => {
datasourceName = `MySQL MOCKDS ${UUID}`;
cy.renameDatasource(datasourceName);
cy.intercept("POST", "/api/v1/datasources/test", {
fixture: "testAction.json",
}).as("testDatasource");
cy.testSaveDatasource(false);
dataSource.DeleteDatasouceFromActiveTab(datasourceName);
});
cy.get("@createDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
cy.intercept("POST", "/api/v1/datasources/test", {
fixture: "testAction.json",
}).as("testDatasource");
cy.testSaveDatasource(false);
});
it("2. Create with trailing white spaces in host address and database name, test, save then delete a MySQL datasource", function() {
cy.NavigateToDatasourceEditor();
cy.get(datasource.MySQL).click();
cy.fillMySQLDatasourceForm(true);
cy.get("@createDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
cy.intercept("POST", "/api/v1/datasources/test", {
fixture: "testAction.json",
}).as("testDatasource");
cy.testSaveDatasource(false);
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = JSON.stringify(
httpResponse.response.body.data.name,
).replace(/['"]+/g, "");
});
});
it("3. Create a new query from the datasource editor", function() {
// cy.get(datasource.createQuery).click();
cy.get(`${datasourceEditor.datasourceCard} ${datasource.createQuery}`)
cy.get(datasource.createQuery)
.last()
.click();
cy.wait("@createNewApi").should(
@ -50,9 +48,7 @@ describe("MySQL datasource test cases", function() {
"response.body.responseMeta.status",
201,
);
cy.deleteQueryUsingContext();
cy.deleteDatasource(datasourceName);
});
});

View File

@ -1,7 +1,7 @@
const datasource = require("../../../../locators/DatasourcesEditor.json");
const queryEditor = require("../../../../locators/QueryEditor.json");
const datasourceEditor = require("../../../../locators/DatasourcesEditor.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
let dataSource = ObjectsRegistry.DataSources;
let datasourceName;
describe("MySQL datasource test cases", function() {
@ -13,25 +13,28 @@ describe("MySQL datasource test cases", function() {
cy.NavigateToDatasourceEditor();
cy.get(datasource.MySQL).click();
cy.fillMySQLDatasourceForm();
cy.get("@createDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
cy.generateUUID().then((UUID) => {
datasourceName = `MySQL MOCKDS ${UUID}`;
cy.renameDatasource(datasourceName);
cy.testSaveDatasource();
dataSource.DeleteDatasouceFromActiveTab(datasourceName);
});
cy.testSaveDatasource();
});
it("2. Create with trailing white spaces in host address and database name, test, save then delete a MySQL datasource", function() {
cy.NavigateToDatasourceEditor();
cy.get(datasource.MySQL).click();
cy.fillMySQLDatasourceForm(true);
cy.get("@createDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
cy.generateUUID().then((UUID) => {
datasourceName = `MySQL MOCKDS ${UUID}`;
cy.renameDatasource(datasourceName);
});
cy.testSaveDatasource();
});
it("3. Create a new query from the datasource editor", function() {
// cy.get(datasource.createQuery).click();
cy.get(`${datasourceEditor.datasourceCard} ${datasource.createQuery}`)
cy.get(datasource.createQuery)
.last()
.click();
cy.wait("@createNewApi").should(
@ -39,9 +42,7 @@ describe("MySQL datasource test cases", function() {
"response.body.responseMeta.status",
201,
);
cy.deleteQueryUsingContext();
cy.deleteDatasource(datasourceName);
});
});

View File

@ -1,7 +1,7 @@
const datasource = require("../../../../locators/DatasourcesEditor.json");
const queryEditor = require("../../../../locators/QueryEditor.json");
const datasourceEditor = require("../../../../locators/DatasourcesEditor.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
let dataSource = ObjectsRegistry.DataSources;
let datasourceName;
describe("Postgres datasource test cases", function() {
@ -13,25 +13,29 @@ describe("Postgres datasource test cases", function() {
cy.NavigateToDatasourceEditor();
cy.get(datasource.PostgreSQL).click();
cy.fillPostgresDatasourceForm();
cy.get("@createDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
cy.testSaveDatasource();
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = JSON.stringify(httpResponse.response.body.data.name);
dataSource.DeleteDatasouceFromActiveTab(
datasourceName.replace(/['"]+/g, ""),
);
});
});
it("2. Create with trailing white spaces in host address and database name, test, save then delete a postgres datasource", function() {
cy.NavigateToDatasourceEditor();
cy.get(datasource.PostgreSQL).click();
cy.fillPostgresDatasourceForm(true);
cy.get("@createDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
cy.testSaveDatasource();
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = JSON.stringify(
httpResponse.response.body.data.name,
).replace(/['"]+/g, "");
});
});
it("3. Create a new query from the datasource editor", function() {
// cy.get(datasource.createQuery).click();
cy.get(`${datasourceEditor.datasourceCard} ${datasource.createQuery}`)
cy.get(datasource.createQuery)
.last()
.click();
cy.wait("@createNewApi").should(
@ -39,9 +43,7 @@ describe("Postgres datasource test cases", function() {
"response.body.responseMeta.status",
201,
);
cy.deleteQueryUsingContext();
cy.deleteDatasource(datasourceName);
});
});

View File

@ -1,7 +1,4 @@
const datasource = require("../../../../locators/DatasourcesEditor.json");
const queryEditor = require("../../../../locators/QueryEditor.json");
const datasourceEditor = require("../../../../locators/DatasourcesEditor.json");
let datasourceName;
describe("Redshift datasource test cases", function() {
@ -17,10 +14,6 @@ describe("Redshift datasource test cases", function() {
datasourceName = `Redshift MOCKDS ${UUID}`;
cy.renameDatasource(datasourceName);
});
cy.get("@createDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
cy.intercept("POST", "/api/v1/datasources/test", {
fixture: "testAction.json",
}).as("testDatasource");
@ -31,18 +24,19 @@ describe("Redshift datasource test cases", function() {
cy.NavigateToDatasourceEditor();
cy.get(datasource.Redshift).click();
cy.fillRedshiftDatasourceForm(true);
cy.get("@createDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
cy.generateUUID().then((UUID) => {
datasourceName = `Redshift MOCKDS ${UUID}`;
cy.renameDatasource(datasourceName);
});
cy.intercept("POST", "/api/v1/datasources/test", {
fixture: "testAction.json",
}).as("testDatasource");
cy.testSaveDatasource(false);
cy.deleteDatasource(datasourceName);
});
it("3. Create a new query from the datasource editor", function() {
// cy.get(datasource.createQuery).click();
cy.get(`${datasourceEditor.datasourceCard} ${datasource.createQuery}`)
cy.get(datasource.createQuery)
.last()
.click();
cy.wait("@createNewApi").should(
@ -50,9 +44,7 @@ describe("Redshift datasource test cases", function() {
"response.body.responseMeta.status",
201,
);
cy.deleteQueryUsingContext();
cy.deleteDatasource(datasourceName);
});
});

View File

@ -1,7 +1,8 @@
const testdata = require("../../../../fixtures/testdata.json");
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
let agHelper = ObjectsRegistry.AggregateHelper;
let agHelper = ObjectsRegistry.AggregateHelper,
locator = ObjectsRegistry.CommonLocators;
describe("Create a rest datasource", function() {
beforeEach(() => {
@ -16,10 +17,12 @@ describe("Create a rest datasource", function() {
cy.get(".t--store-as-datasource")
.trigger("click")
.wait(1000);
agHelper.ValidateToastMessage("datasource created"); //verifying there is no error toast, Bug 14566
agHelper.AssertElementAbsence(
locator._specificToast("Duplicate key error"),
); //verifying there is no error toast, Bug 14566
cy.testSelfSignedCertificateSettingsInREST(false);
cy.saveDatasource();
cy.contains(".datasource-highlight", "https://mock-api.appsmith.com");
cy.contains(".datasource-highlight", "https://mock-api.appsmith.com"); //failing here since Save as Datasource is broken
cy.SaveAndRunAPI();
});
});

View File

@ -5,13 +5,14 @@ import { ObjectsRegistry } from "../../../../support/Objects/Registry";
let agHelper = ObjectsRegistry.AggregateHelper,
apiPage = ObjectsRegistry.ApiPage,
ee = ObjectsRegistry.EntityExplorer;
ee = ObjectsRegistry.EntityExplorer,
datasources = ObjectsRegistry.DataSources;
describe("Datasource form OAuth2 client credentials related tests", function() {
it("1. Create an API with app url and save as Datasource for Client Credentials test", function() {
apiPage.CreateAndFillApi(testdata.appUrl, "TestOAuth");
agHelper.GetNClick(apiPage._saveAsDS);
agHelper.ValidateToastMessage("datasource created"); //verifying there is no error toast, Bug 14566
// agHelper.ValidateToastMessage("datasource created"); //verifying there is no error toast, Bug 14566
});
it("2. Add Oauth details to datasource and save", function() {
@ -22,6 +23,11 @@ describe("Datasource form OAuth2 client credentials related tests", function() {
testdata.clientSecret,
testdata.oauth2Scopes,
);
// since we are moving to different, it will show unsaved changes dialog
// save datasource and then proceed
datasources.SaveDatasource();
ee.SelectEntityByName("TestOAuth", "Queries/JS");
agHelper.ActionContextMenuWithInPane("Delete", "Are you sure?");
});
@ -29,7 +35,7 @@ describe("Datasource form OAuth2 client credentials related tests", function() {
it("3. Create an API with app url and save as Datasource for Authorization code details test", function() {
apiPage.CreateAndFillApi(testdata.appUrl, "TestOAuth");
agHelper.GetNClick(apiPage._saveAsDS);
agHelper.ValidateToastMessage("datasource created"); //verifying there is no error toast, Bug 14566
// agHelper.ValidateToastMessage("datasource created"); //verifying there is no error toast, Bug 14566
});
it("4. Add Oauth details to datasource and save", function() {

View File

@ -5,17 +5,17 @@ let dsName: any, query: string;
const agHelper = ObjectsRegistry.AggregateHelper,
ee = ObjectsRegistry.EntityExplorer,
dataSources = ObjectsRegistry.DataSources,
propPane = ObjectsRegistry.PropertyPane,
table = ObjectsRegistry.Table,
locator = ObjectsRegistry.CommonLocators,
deployMode = ObjectsRegistry.DeployMode;
deployMode = ObjectsRegistry.DeployMode,
appSettings = ObjectsRegistry.AppSettings;
describe("MySQL Datatype tests", function() {
before(() => {
cy.fixture("Datatypes/mySQLdsl").then((val: any) => {
agHelper.AddDsl(val);
});
propPane.ChangeTheme("Moon");
appSettings.openPaneAndChangeTheme("Moon");
});
it("1. Create Mysql DS", function() {
@ -88,10 +88,10 @@ describe("MySQL Datatype tests", function() {
inputData.result.forEach((res_array, i) => {
res_array.forEach((value, j) => {
table.ReadTableRowColumnData(j, i, 0).then(($cellData) => {
if(i === inputData.result.length-1){
let obj = JSON.parse($cellData)
if (i === inputData.result.length - 1) {
const obj = JSON.parse($cellData);
expect(JSON.stringify(obj)).to.eq(JSON.stringify(value));
}else{
} else {
expect($cellData).to.eq(value);
}
});
@ -137,14 +137,11 @@ describe("MySQL Datatype tests", function() {
it("9. Verify Deletion of the datasource after all created queries are Deleted", () => {
dataSources.DeleteDatasouceFromWinthinDS(dsName, 409); //Since all queries exists
ee.ExpandCollapseEntity("Queries/JS");
[
"createTable",
"dropTable",
"insertRecord",
"selectRecords",
].forEach((type) => {
ee.ActionContextMenuByEntityName(type, "Delete", "Are you sure?");
});
["createTable", "dropTable", "insertRecord", "selectRecords"].forEach(
(type) => {
ee.ActionContextMenuByEntityName(type, "Delete", "Are you sure?");
},
);
deployMode.DeployApp();
deployMode.NavigateBacktoEditor();
ee.ExpandCollapseEntity("Queries/JS");

View File

@ -2,14 +2,13 @@ import { ObjectsRegistry } from "../../../../support/Objects/Registry";
let dsName: any;
let agHelper = ObjectsRegistry.AggregateHelper,
const agHelper = ObjectsRegistry.AggregateHelper,
ee = ObjectsRegistry.EntityExplorer,
locator = ObjectsRegistry.CommonLocators,
homePage = ObjectsRegistry.HomePage,
dataSources = ObjectsRegistry.DataSources,
deployMode = ObjectsRegistry.DeployMode,
table = ObjectsRegistry.Table,
propPane = ObjectsRegistry.PropertyPane;
appSettings = ObjectsRegistry.AppSettings;
describe("Validate Mongo CRUD with JSON Form", () => {
before(() => {
@ -24,7 +23,8 @@ describe("Validate Mongo CRUD with JSON Form", () => {
});
it("1. Create DS & then Add new Page and generate CRUD template using created datasource", () => {
propPane.ChangeTheme("Water Lily");
appSettings.openPaneAndChangeTheme("Water Lily");
dataSources.CreateDataSource("Mongo");
cy.get("@dsName").then(($dsName) => {
dsName = $dsName;
@ -88,7 +88,7 @@ describe("Validate Mongo CRUD with JSON Form", () => {
) {
agHelper.GetNClick(dataSources._generatePageBtn);
agHelper.ValidateNetworkStatus("@replaceLayoutWithCRUDPage", 201);
agHelper.AssertContains("Successfully generated a page");// Commenting this since FindQuery failure appears sometimes
agHelper.AssertContains("Successfully generated a page"); // Commenting this since FindQuery failure appears sometimes
agHelper.ValidateNetworkStatus("@getActions", 200);
agHelper.ValidateNetworkStatus("@postExecute", 200);
agHelper.ValidateNetworkStatus("@updateLayout", 200);

View File

@ -8,8 +8,8 @@ const agHelper = ObjectsRegistry.AggregateHelper,
table = ObjectsRegistry.Table,
homePage = ObjectsRegistry.HomePage,
dataSources = ObjectsRegistry.DataSources,
propPane = ObjectsRegistry.PropertyPane,
deployMode = ObjectsRegistry.DeployMode;
deployMode = ObjectsRegistry.DeployMode,
appSettings = ObjectsRegistry.AppSettings;
describe("Validate Postgres Generate CRUD with JSON Form", () => {
it("1. Create DS & then Add new Page and generate CRUD template using created datasource", () => {
@ -77,7 +77,7 @@ describe("Validate Postgres Generate CRUD with JSON Form", () => {
cy.get("@dsName").then(($dsName) => {
dsName = $dsName;
});
propPane.ChangeTheme("Sunrise");
appSettings.openPaneAndChangeTheme("Sunrise");
});
it("3. Generate CRUD page from datasource present in ACTIVE section", function() {

View File

@ -155,10 +155,10 @@ describe("Generate New CRUD Page Inside from entity explorer", function() {
//Save source
cy.get(".t--save-datasource").click();
cy.wait("@createDatasource");
cy.wait("@saveDatasource");
//Verify page after save clicked
// cy.get("@createDatasource").then((httpResponse) => {
// cy.get("@saveDatasource").then((httpResponse) => {
// datasourceName = httpResponse.response.body.data.name;
// });

View File

@ -0,0 +1,91 @@
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
const jsEditor = ObjectsRegistry.JSEditor;
const agHelper = ObjectsRegistry.AggregateHelper;
const explorerHelper = ObjectsRegistry.EntityExplorer;
const propertyPaneHelper = ObjectsRegistry.PropertyPane;
const aggregateHelper = ObjectsRegistry.AggregateHelper;
describe("Tests fetch calls", () => {
it("1. Ensures that cookies are not passed with fetch calls", function() {
jsEditor.CreateJSObject(
`export default {
myVar1: [],
myVar2: {},
myFun1: async (x = "default") => {
return fetch("/api/v1/users/me", { credentials: 'include' }).then(res => res.json()).then(function(res) {
showAlert(res.data.username);
})
},
myFun2: async function() {
const req = new Request("/api/v1/users/me", { credentials: 'include' });
const res = await fetch(req);
const jsonRes = await res.json();
showAlert(jsonRes.data.username);
}
}`,
{
paste: true,
completeReplace: true,
toRun: false,
shouldCreateNewJSObj: true,
prettify: true,
},
);
agHelper.Sleep(2000);
jsEditor.RunJSObj();
agHelper.AssertContains("anonymousUser", "exist");
jsEditor.SelectFunctionDropdown("myFun2");
jsEditor.RunJSObj();
agHelper.AssertContains("anonymousUser", "exist");
});
it("2. Tests if fetch works with setTimeout", function() {
jsEditor.CreateJSObject(
`export default {
myVar1: [],
myVar2: {},
delay: (fn, x = 1000) => {
setTimeout(fn, x);
},
api: async function() {
const req = new Request("/api/v1/users/me", { credentials: 'include' });
const res = await fetch(req);
const jsonRes = await res.json();
showAlert(jsonRes.data.username);
},
invoker() {
this.delay(this.api, 3000);
}
}`,
{
paste: true,
completeReplace: true,
toRun: false,
shouldCreateNewJSObj: true,
prettify: true,
},
);
agHelper.Sleep(2000);
jsEditor.SelectFunctionDropdown("invoker");
jsEditor.RunJSObj();
agHelper.Sleep(3000);
agHelper.AssertContains("anonymousUser", "exist");
});
it("3. Tests if fetch works with store value", function() {
explorerHelper.NavigateToSwitcher("widgets");
explorerHelper.DragDropWidgetNVerify("buttonwidget", 500, 200);
explorerHelper.SelectEntityByName("Button1");
propertyPaneHelper.TypeTextIntoField("Label", "getUserID");
propertyPaneHelper.EnterJSContext(
"onClick",
`{{fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(res => res.json())
.then(json => storeValue('userId', json.userId))
.then(() => showAlert("UserId: " + appsmith.store.userId))}}`,
);
aggregateHelper.Sleep(2000);
aggregateHelper.ClickButton("getUserID");
agHelper.AssertContains("UserId: 1", "exist");
});
});

View File

@ -36,6 +36,8 @@ describe("Layout OnLoad Actions tests", function() {
});
});
//Skipping others tests due to RTS server changes
it("2. Bug 8595: OnPageLoad execution - when Query Parmas added via Params tab", function() {
cy.fixture("onPageLoadActionsDsl").then((val: any) => {
agHelper.AddDsl(val, locator._imageWidget);

View File

@ -16,7 +16,7 @@ describe("API Panel Test Functionality", function() {
cy.get(datasource.PostgreSQL).click();
cy.fillPostgresDatasourceForm();
cy.testSaveDatasource();
cy.get("@createDatasource").then((httpResponse) => {
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
});

View File

@ -4,10 +4,10 @@ let dsName: any, query: string;
const agHelper = ObjectsRegistry.AggregateHelper,
ee = ObjectsRegistry.EntityExplorer,
dataSources = ObjectsRegistry.DataSources,
propPane = ObjectsRegistry.PropertyPane,
table = ObjectsRegistry.Table,
locator = ObjectsRegistry.CommonLocators,
deployMode = ObjectsRegistry.DeployMode;
deployMode = ObjectsRegistry.DeployMode,
appSettings = ObjectsRegistry.AppSettings;
describe("Array Datatype tests", function() {
before(() => {
@ -22,8 +22,7 @@ describe("Array Datatype tests", function() {
agHelper.AddDsl(val);
});
ee.NavigateToSwitcher("widgets");
propPane.ChangeThemeColor(-31, "Primary");
propPane.ChangeThemeColor(-27, "Background");
appSettings.openPaneAndChangeThemeColors(-31, -27);
});
it("1. Creating table query - arraytypes", () => {

View File

@ -4,10 +4,10 @@ let dsName: any, query: string, imageNameToUpload: string;
const agHelper = ObjectsRegistry.AggregateHelper,
ee = ObjectsRegistry.EntityExplorer,
dataSources = ObjectsRegistry.DataSources,
propPane = ObjectsRegistry.PropertyPane,
table = ObjectsRegistry.Table,
locator = ObjectsRegistry.CommonLocators,
deployMode = ObjectsRegistry.DeployMode;
deployMode = ObjectsRegistry.DeployMode,
appSettings = ObjectsRegistry.AppSettings;
describe("Binary Datatype tests", function() {
before(() => {
@ -22,8 +22,7 @@ describe("Binary Datatype tests", function() {
agHelper.AddDsl(val);
});
ee.NavigateToSwitcher("widgets");
propPane.ChangeThemeColor(24, "Primary");
propPane.ChangeThemeColor(-37, "Background");
appSettings.openPaneAndChangeThemeColors(24, -37);
});
it("1. Creating table query - binarytype", () => {

View File

@ -4,18 +4,17 @@ let dsName: any, query: string;
const agHelper = ObjectsRegistry.AggregateHelper,
ee = ObjectsRegistry.EntityExplorer,
dataSources = ObjectsRegistry.DataSources,
propPane = ObjectsRegistry.PropertyPane,
table = ObjectsRegistry.Table,
locator = ObjectsRegistry.CommonLocators,
deployMode = ObjectsRegistry.DeployMode;
deployMode = ObjectsRegistry.DeployMode,
appSettings = ObjectsRegistry.AppSettings;
describe("Boolean & Enum Datatype tests", function() {
before(() => {
cy.fixture("Datatypes/BooleanEnumDTdsl").then((val: any) => {
agHelper.AddDsl(val);
});
propPane.ChangeThemeColor(-18, "Primary");
propPane.ChangeThemeColor(-20, "Background");
appSettings.openPaneAndChangeThemeColors(-18, -20);
});
it("1. Create Postgress DS", function() {

View File

@ -4,17 +4,17 @@ let dsName: any, query: string;
const agHelper = ObjectsRegistry.AggregateHelper,
ee = ObjectsRegistry.EntityExplorer,
dataSources = ObjectsRegistry.DataSources,
propPane = ObjectsRegistry.PropertyPane,
table = ObjectsRegistry.Table,
locator = ObjectsRegistry.CommonLocators,
deployMode = ObjectsRegistry.DeployMode;
deployMode = ObjectsRegistry.DeployMode,
appSettings = ObjectsRegistry.AppSettings;
describe("Character Datatype tests", function() {
before(() => {
cy.fixture("Datatypes/CharacterDTdsl").then((val: any) => {
agHelper.AddDsl(val);
});
propPane.ChangeTheme("Pacific");
appSettings.openPaneAndChangeTheme("Pacific");
});
it("1. Create Postgress DS", function() {

View File

@ -4,18 +4,17 @@ let dsName: any, query: string;
const agHelper = ObjectsRegistry.AggregateHelper,
ee = ObjectsRegistry.EntityExplorer,
dataSources = ObjectsRegistry.DataSources,
propPane = ObjectsRegistry.PropertyPane,
table = ObjectsRegistry.Table,
locator = ObjectsRegistry.CommonLocators,
deployMode = ObjectsRegistry.DeployMode;
deployMode = ObjectsRegistry.DeployMode,
appSettings = ObjectsRegistry.AppSettings;
describe("DateTime Datatype tests", function() {
before(() => {
cy.fixture("Datatypes/DateTimeDTdsl").then((val: any) => {
agHelper.AddDsl(val);
});
propPane.ChangeThemeColor(22, "Primary");
propPane.ChangeThemeColor(32, "Background");
appSettings.openPaneAndChangeThemeColors(22, 32);
});
it("1. Create Postgress DS", function() {

View File

@ -4,10 +4,10 @@ let dsName: any, query: string;
const agHelper = ObjectsRegistry.AggregateHelper,
ee = ObjectsRegistry.EntityExplorer,
dataSources = ObjectsRegistry.DataSources,
propPane = ObjectsRegistry.PropertyPane,
table = ObjectsRegistry.Table,
locator = ObjectsRegistry.CommonLocators,
deployMode = ObjectsRegistry.DeployMode;
deployMode = ObjectsRegistry.DeployMode,
appSettings = ObjectsRegistry.AppSettings;
describe("Json & JsonB Datatype tests", function() {
before(() => {
@ -32,8 +32,7 @@ describe("Json & JsonB Datatype tests", function() {
agHelper.AddDsl(val);
});
ee.NavigateToSwitcher("widgets");
propPane.ChangeThemeColor(33, "Primary");
propPane.ChangeThemeColor(39, "Background");
appSettings.openPaneAndChangeThemeColors(33, 39);
});
it("1. Creating table query - jsonbooks", () => {
@ -357,8 +356,7 @@ describe("Json & JsonB Datatype tests", function() {
agHelper.AddDsl(val);
});
ee.NavigateToSwitcher("widgets");
propPane.ChangeThemeColor(12, "Primary");
propPane.ChangeThemeColor(23, "Background");
appSettings.openPaneAndChangeThemeColors(12, 23);
});
it("15. Creating enum & table queries - jsonBbooks", () => {

View File

@ -4,17 +4,17 @@ let dsName: any, query: string;
const agHelper = ObjectsRegistry.AggregateHelper,
ee = ObjectsRegistry.EntityExplorer,
dataSources = ObjectsRegistry.DataSources,
propPane = ObjectsRegistry.PropertyPane,
table = ObjectsRegistry.Table,
locator = ObjectsRegistry.CommonLocators,
deployMode = ObjectsRegistry.DeployMode;
deployMode = ObjectsRegistry.DeployMode,
appSettings = ObjectsRegistry.AppSettings;
describe("Numeric Datatype tests", function() {
before(() => {
cy.fixture("Datatypes/NumericDTdsl").then((val: any) => {
agHelper.AddDsl(val);
});
propPane.ChangeTheme("Moon");
appSettings.openPaneAndChangeTheme("Moon");
});
it("1. Create Postgress DS", function() {

View File

@ -4,11 +4,11 @@ let dsName: any, query: string, imageNameToUpload: string;
const agHelper = ObjectsRegistry.AggregateHelper,
ee = ObjectsRegistry.EntityExplorer,
dataSources = ObjectsRegistry.DataSources,
propPane = ObjectsRegistry.PropertyPane,
table = ObjectsRegistry.Table,
locator = ObjectsRegistry.CommonLocators,
deployMode = ObjectsRegistry.DeployMode,
apiPage = ObjectsRegistry.ApiPage;
apiPage = ObjectsRegistry.ApiPage,
appSettings = ObjectsRegistry.AppSettings;
describe("UUID Datatype tests", function() {
before(() => {
@ -23,7 +23,7 @@ describe("UUID Datatype tests", function() {
agHelper.AddDsl(val);
});
ee.NavigateToSwitcher("widgets");
propPane.ChangeTheme("Earth");
appSettings.openPaneAndChangeTheme("Earth");
});
it("1. Creating supporting api's for generating random UUID's", () => {
@ -201,7 +201,9 @@ describe("UUID Datatype tests", function() {
agHelper.AssertContains("New V1 UUID available!");
agHelper.ClickButton("Update");
agHelper.AssertElementAbsence(locator._specificToast("failed to execute")); //Assert that Insert did not fail
agHelper.AssertElementAbsence(
locator._specificToast("failed to execute"),
); //Assert that Insert did not fail
agHelper.AssertElementVisible(locator._spanButton("Run UpdateQuery"));
table.WaitUntilTableLoad();
table.ReadTableRowColumnData(2, 0).then(($cellData) => {
@ -232,7 +234,9 @@ describe("UUID Datatype tests", function() {
agHelper.AssertContains("New GUID available!");
agHelper.ClickButton("Update");
agHelper.AssertElementAbsence(locator._specificToast("failed to execute")); //Assert that Insert did not fail
agHelper.AssertElementAbsence(
locator._specificToast("failed to execute"),
); //Assert that Insert did not fail
agHelper.AssertElementVisible(locator._spanButton("Run UpdateQuery"));
table.WaitUntilTableLoad();
table.ReadTableRowColumnData(2, 0).then(($cellData) => {
@ -269,7 +273,7 @@ describe("UUID Datatype tests", function() {
expect($cellData).to.eq("0");
});
agHelper.Sleep(2000);// Above entensions settling time
agHelper.Sleep(2000); // Above entensions settling time
//Validating generation of new uuid via the extension package
query = `SELECT uuid_generate_v1() as v1, uuid_generate_v4() as v4, gen_random_uuid() as cryptov4, uuid_in(overlay(overlay(md5(random()::text || ':' || random()::text) placing '4' from 13) placing to_hex(floor(random()*(11-8+1) + 8)::int)::text from 17)::cstring) as form_uuid1, uuid_in(md5(random()::text || random()::text)::cstring) as form_uuid2;`;
@ -348,8 +352,7 @@ describe("UUID Datatype tests", function() {
agHelper.ValidateNetworkStatus("@postExecute", 200);
agHelper.ValidateNetworkStatus("@postExecute", 200);
table.ReadTableRowColumnData(1, 0).then(($cellData) => {
expect($cellData)
.not.to.eq("2"); //asserting 2nd record is deleted
expect($cellData).not.to.eq("2"); //asserting 2nd record is deleted
});
});

View File

@ -18,7 +18,7 @@ describe("Addwidget from Query and bind with other widgets", function() {
it("1. Create a PostgresDataSource", () => {
cy.createPostgresDatasource();
cy.get("@createDatasource").then((httpResponse) => {
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
});

View File

@ -7,7 +7,7 @@ describe("Add widget - Postgress DataSource", function() {
beforeEach(() => {
cy.startRoutesForDatasource();
cy.createPostgresDatasource();
cy.get("@createDatasource").then((httpResponse) => {
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
});

View File

@ -9,7 +9,7 @@ describe("Confirm run action", function() {
beforeEach(() => {
cy.createPostgresDatasource();
cy.get("@createDatasource").then((httpResponse) => {
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
});

View File

@ -9,6 +9,10 @@ let agHelper = ObjectsRegistry.AggregateHelper,
describe("Check datasource doc links", function() {
it("1. Verify Postgres documentation opens", function() {
dataSources.CreateDataSource("Postgres");
// go back to active ds list
dataSources.NavigateToActiveTab();
cy.get("@dsName").then(($dsName) => {
dsName = $dsName;
dataSources.CreateQuery(dsName);
@ -22,6 +26,10 @@ describe("Check datasource doc links", function() {
it("2. Verify Mongo documentation opens", function() {
dataSources.CreateDataSource("Mongo");
// go back to active ds list
dataSources.NavigateToActiveTab();
cy.get("@dsName").then(($dsName) => {
dsName = $dsName;
dataSources.CreateQuery(dsName);
@ -33,6 +41,10 @@ describe("Check datasource doc links", function() {
it("3. Verify MySQL documentation opens", function() {
dataSources.CreateDataSource("MySql");
// go back to active ds list
dataSources.NavigateToActiveTab();
cy.get("@dsName").then(($dsName) => {
dsName = $dsName;
dataSources.CreateQuery(dsName);

View File

@ -12,7 +12,7 @@ describe("Create a query with a empty datasource, run, save the query", function
cy.NavigateToDatasourceEditor();
cy.get(datasource.PostgreSQL).click();
cy.testSaveDatasource(false);
cy.get("@createDatasource").then((httpResponse) => {
cy.get("@saveDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
});
});

Some files were not shown because too many files have changed in this diff Show More