PromucFlow_constructor/app/client/cypress/support/Pages/Table.ts

817 lines
27 KiB
TypeScript
Raw Normal View History

import { ObjectsRegistry } from "../Objects/Registry";
feat: Table one click binding for MongoDB and Postgres (#23629) > Pull Request Template > > Use this template to quickly create a well written pull request. Delete all quotes before creating the pull request. > ## Description > Add a TL;DR when description is extra long (helps content team) > > Please include a summary of the changes and which issue has been fixed. Please also include relevant motivation > and context. List any dependencies that are required for this change > > Links to Notion, Figma or any other documents that might be relevant to the PR > > #### PR fixes following issue(s) Fixes # (issue number) > 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) - Chore (housekeeping or task changes that don't impact user perception) - This change requires a documentation update > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - [x] Jest - [x] Cypress > > #### Test Plan > One Click Binding - https://github.com/appsmithorg/TestSmith/issues/2390 > #### 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 - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Test-plan-implementation#speedbreaker-features-to-consider-for-every-change) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans/_edit#areas-of-interest) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --------- Co-authored-by: Vemparala Surya Vamsi <vamsi@appsmith.com>
2023-06-01 17:26:05 +00:00
import sampleTableData from "../../fixtures/Table/sampleTableData.json";
const path = require("path");
type filterTypes =
| "contains"
| "does not contain"
| "starts with"
| "ends with"
| "is exactly"
| "empty"
| "not empty"
| "is equal to"
| "not equal to"
| "greater than"
| "greater than or equal to"
| "less than"
| "less than or equal to";
type columnTypeValues =
feat: [epic] appsmith design system version 2 deduplication (#22030) ## Description ### Fixes - [x] https://github.com/appsmithorg/appsmith/issues/19383 - [x] https://github.com/appsmithorg/appsmith/issues/19384 - [x] https://github.com/appsmithorg/appsmith/issues/19385 - [x] https://github.com/appsmithorg/appsmith/issues/19386 - [x] https://github.com/appsmithorg/appsmith/issues/19387 - [x] https://github.com/appsmithorg/appsmith/issues/19388 - [x] https://github.com/appsmithorg/appsmith/issues/19389 - [x] https://github.com/appsmithorg/appsmith/issues/19390 - [x] https://github.com/appsmithorg/appsmith/issues/19391 - [x] https://github.com/appsmithorg/appsmith/issues/19392 - [x] https://github.com/appsmithorg/appsmith/issues/19393 - [x] https://github.com/appsmithorg/appsmith/issues/19394 - [x] https://github.com/appsmithorg/appsmith/issues/19395 - [x] https://github.com/appsmithorg/appsmith/issues/19396 - [x] https://github.com/appsmithorg/appsmith/issues/19397 - [x] https://github.com/appsmithorg/appsmith/issues/19398 - [x] https://github.com/appsmithorg/appsmith/issues/19399 - [x] https://github.com/appsmithorg/appsmith/issues/19400 - [x] https://github.com/appsmithorg/appsmith/issues/19401 - [x] https://github.com/appsmithorg/appsmith/issues/19402 - [x] https://github.com/appsmithorg/appsmith/issues/19403 - [x] https://github.com/appsmithorg/appsmith/issues/19404 - [x] https://github.com/appsmithorg/appsmith/issues/19405 - [x] https://github.com/appsmithorg/appsmith/issues/19406 - [x] https://github.com/appsmithorg/appsmith/issues/19407 - [x] https://github.com/appsmithorg/appsmith/issues/19408 - [x] https://github.com/appsmithorg/appsmith/issues/19409 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) - Chore (housekeeping or task changes that don't impact user perception) - 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 --------- Co-authored-by: Ankita Kinger <ankita@appsmith.com> Co-authored-by: akash-codemonk <67054171+akash-codemonk@users.noreply.github.com> Co-authored-by: Tanvi Bhakta <tanvi@appsmith.com> Co-authored-by: Arsalan <arsalanyaldram0211@outlook.com> Co-authored-by: Aman Agarwal <aman@appsmith.com> Co-authored-by: Rohit Agarwal <rohit_agarwal@live.in> Co-authored-by: Nilesh Sarupriya <nilesh@appsmith.com> Co-authored-by: Nilesh Sarupriya <20905988+nsarupr@users.noreply.github.com> Co-authored-by: Tanvi Bhakta <tanvibhakta@gmail.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com> Co-authored-by: Parthvi Goswami <parthvigoswami@Parthvis-MacBook-Pro.local> Co-authored-by: Vijetha-Kaja <vijetha@appsmith.com> Co-authored-by: Parthvi <80334441+Parthvi12@users.noreply.github.com> Co-authored-by: Apple <nandan@thinkify.io> Co-authored-by: Saroj <43822041+sarojsarab@users.noreply.github.com> Co-authored-by: Sangeeth Sivan <74818788+berzerkeer@users.noreply.github.com> Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com> Co-authored-by: Aishwarya-U-R <91450662+Aishwarya-U-R@users.noreply.github.com> Co-authored-by: rahulramesha <rahul@appsmith.com> Co-authored-by: Aswath K <aswath.sana@gmail.com> Co-authored-by: Preet Sidhu <preetsidhu.bits@gmail.com> Co-authored-by: Vijetha-Kaja <119562824+Vijetha-Kaja@users.noreply.github.com> Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
2023-05-19 18:37:06 +00:00
| "Plain text"
| "URL"
| "Number"
| "Image"
| "Video"
| "Date"
| "Button"
feat: [epic] appsmith design system version 2 deduplication (#22030) ## Description ### Fixes - [x] https://github.com/appsmithorg/appsmith/issues/19383 - [x] https://github.com/appsmithorg/appsmith/issues/19384 - [x] https://github.com/appsmithorg/appsmith/issues/19385 - [x] https://github.com/appsmithorg/appsmith/issues/19386 - [x] https://github.com/appsmithorg/appsmith/issues/19387 - [x] https://github.com/appsmithorg/appsmith/issues/19388 - [x] https://github.com/appsmithorg/appsmith/issues/19389 - [x] https://github.com/appsmithorg/appsmith/issues/19390 - [x] https://github.com/appsmithorg/appsmith/issues/19391 - [x] https://github.com/appsmithorg/appsmith/issues/19392 - [x] https://github.com/appsmithorg/appsmith/issues/19393 - [x] https://github.com/appsmithorg/appsmith/issues/19394 - [x] https://github.com/appsmithorg/appsmith/issues/19395 - [x] https://github.com/appsmithorg/appsmith/issues/19396 - [x] https://github.com/appsmithorg/appsmith/issues/19397 - [x] https://github.com/appsmithorg/appsmith/issues/19398 - [x] https://github.com/appsmithorg/appsmith/issues/19399 - [x] https://github.com/appsmithorg/appsmith/issues/19400 - [x] https://github.com/appsmithorg/appsmith/issues/19401 - [x] https://github.com/appsmithorg/appsmith/issues/19402 - [x] https://github.com/appsmithorg/appsmith/issues/19403 - [x] https://github.com/appsmithorg/appsmith/issues/19404 - [x] https://github.com/appsmithorg/appsmith/issues/19405 - [x] https://github.com/appsmithorg/appsmith/issues/19406 - [x] https://github.com/appsmithorg/appsmith/issues/19407 - [x] https://github.com/appsmithorg/appsmith/issues/19408 - [x] https://github.com/appsmithorg/appsmith/issues/19409 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) - Chore (housekeeping or task changes that don't impact user perception) - 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 --------- Co-authored-by: Ankita Kinger <ankita@appsmith.com> Co-authored-by: akash-codemonk <67054171+akash-codemonk@users.noreply.github.com> Co-authored-by: Tanvi Bhakta <tanvi@appsmith.com> Co-authored-by: Arsalan <arsalanyaldram0211@outlook.com> Co-authored-by: Aman Agarwal <aman@appsmith.com> Co-authored-by: Rohit Agarwal <rohit_agarwal@live.in> Co-authored-by: Nilesh Sarupriya <nilesh@appsmith.com> Co-authored-by: Nilesh Sarupriya <20905988+nsarupr@users.noreply.github.com> Co-authored-by: Tanvi Bhakta <tanvibhakta@gmail.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com> Co-authored-by: Parthvi Goswami <parthvigoswami@Parthvis-MacBook-Pro.local> Co-authored-by: Vijetha-Kaja <vijetha@appsmith.com> Co-authored-by: Parthvi <80334441+Parthvi12@users.noreply.github.com> Co-authored-by: Apple <nandan@thinkify.io> Co-authored-by: Saroj <43822041+sarojsarab@users.noreply.github.com> Co-authored-by: Sangeeth Sivan <74818788+berzerkeer@users.noreply.github.com> Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com> Co-authored-by: Aishwarya-U-R <91450662+Aishwarya-U-R@users.noreply.github.com> Co-authored-by: rahulramesha <rahul@appsmith.com> Co-authored-by: Aswath K <aswath.sana@gmail.com> Co-authored-by: Preet Sidhu <preetsidhu.bits@gmail.com> Co-authored-by: Vijetha-Kaja <119562824+Vijetha-Kaja@users.noreply.github.com> Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
2023-05-19 18:37:06 +00:00
| "Menu button"
fix: add null check for select options in table widget (#24902) ## Description This PR passes a `[]` to the select component when some values in the select options that are passed to the select cell component are `null`. This fixes issue where the table widget breaks when select options for the select column type contains `{{null}}` or `{{[null, null]}}` #### PR fixes following issue(s) Fixes #24857 #### Type of change - Bug fix (non-breaking change which fixes an issue) ## Testing #### How Has This Been Tested? - [x] Manual - To test that table widget does not break when `{{[null]}}`, `{{[null, null]}}`, `{{null}}` is passed to select options or new row select options. - To test that table widget does not break when select options or new row select options contains API binding that does not have any data - [ ] Jest - [x] Cypress - should test that select column dropdown has no results found string when select option is {{null}} - should test that select column dropdown has no results found string when select option is {{[null, null]}} #### 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 - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] 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: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
2023-06-29 07:07:41 +00:00
| "Icon button"
| "Select";
export class Table {
private agHelper = ObjectsRegistry.AggregateHelper;
private deployMode = ObjectsRegistry.DeployMode;
private locator = ObjectsRegistry.CommonLocators;
private propPane = ObjectsRegistry.PropertyPane;
private assertHelper = ObjectsRegistry.AssertHelper;
private _tableWrap = "//div[contains(@class,'tableWrap')]";
private _tableHeader = ".thead div[role=columnheader]";
private _columnHeader = (columnName: string) =>
this._tableWrap +
"//div[contains(@class,'thead')]//div[contains(@class,'tr')][1]//div[@role='columnheader']//div[contains(text(),'" +
columnName +
"')]/parent::div/parent::div";
_columnHeaderDiv = (columnName: string) => `[data-header=${columnName}]`;
private _tableWidgetVersion = (version: "v1" | "v2") =>
`.t--widget-tablewidget${version == "v1" ? "" : version}`;
private _nextPage = (version: "v1" | "v2") =>
this._tableWidgetVersion(version) + " .t--table-widget-next-page";
private _previousPage = (version: "v1" | "v2") =>
this._tableWidgetVersion(version) + " .t--table-widget-prev-page";
private _pageNumber = ".t--widget-tablewidgetv2 .page-item";
private _pageNumberServerSideOff =
".t--widget-tablewidgetv2 .t--table-widget-page-input input";
private _pageNumberServerSidePagination = ".t--widget-tablewidget .page-item";
private _pageNumberClientSidePagination =
".t--widget-tablewidget .t--table-widget-page-input input";
_tableRow = (rowNum: number, colNum: number, version: "v1" | "v2") =>
this._tableWidgetVersion(version) +
` .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}]`;
_editCellIconDiv = ".t--editable-cell-icon";
_editCellEditor = ".t--inlined-cell-editor";
_editCellEditorInput = this._editCellEditor + " input";
_tableRowColumnDataVersion = (version: "v1" | "v2") =>
`${version == "v1" ? " div div" : " .cell-wrapper"}`;
_tableRowColumnData = (
rowNum: number,
colNum: number,
version: "v1" | "v2",
) =>
this._tableRow(rowNum, colNum, version) +
this._tableRowColumnDataVersion(version);
_tableLoadStateDelete = (version: "v1" | "v2") =>
this._tableRow(0, 0, version) + ` div div button span:contains('Delete')`;
_tableRowImageColumnData = (
rowNum: number,
colNum: number,
version: "v1" | "v2",
) => this._tableRow(rowNum, colNum, version) + ` div div.image-cell`;
_tableEmptyColumnData = (version: "v1" | "v2") =>
this._tableWidgetVersion(version) + " .tbody .td"; //selected-row
_tableSelectedRow =
this._tableWrap +
"//div[contains(@class, 'tbody')]//div[contains(@class, 'selected-row')]/div";
_liNextPage = "li[title='Next Page']";
_liPreviousPage = "li[title='Previous Page']";
_liCurrentSelectedPage =
"//div[@type='LIST_WIDGET']//ul[contains(@class, 'rc-pagination')]/li[contains(@class, 'rc-pagination-item-active')]/a";
fix: Makes use of mobile positioning properties in Table Widget (#24729) ## Description Table widget's pageSize property was not taking account of mobile position properties (`mobileTopRow` and `mobileBottomRow`) in Auto Layout mode. This caused the issues mentioned in this PR. Since this is a derived property, properties such as `isMobile` and `appPositioningType` were not directly available. So, we added these into the DataTree as well. #### PR fixes following issue(s) Fixes #22907 Fixes #22911 #### 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 - Bug fix (non-breaking change which fixes an issue) > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] 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 - [x] My code follows the style guidelines of this project - [x] 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 - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --------- Co-authored-by: rahulramesha <rahul@appsmith.com>
2023-07-17 05:42:52 +00:00
private _tr = ".tbody .tr";
private _searchTableInput = "input[type='search'][placeholder='Search...']";
_searchBoxCross =
"//div[contains(@class, 't--search-input')]/following-sibling::div";
_addIcon = "button .bp3-icon-add";
_trashIcon = "button span[icon='trash']";
_visibleTextSpan = (spanText: string) => "//span[text()='" + spanText + "']";
_filterBtn = ".t--table-filter-toggle-btn";
_filterColumnsDropdown = ".t--table-filter-columns-dropdown";
_dropdownText = ".t--dropdown-option";
_filterConditionDropdown = ".t--table-filter-conditions-dropdown";
_filterInputValue = ".t--table-filter-value-input input";
_addColumn = ".t--add-column-btn";
_deleteColumn = ".t--delete-column-btn";
_defaultColName =
"[data-rbd-draggable-id='customColumn1'] input[type='text']";
private _filterApplyBtn = ".t--apply-filter-btn";
private _filterCloseBtn = ".t--close-filter-btn";
private _removeFilter = ".t--table-filter-remove-btn";
private _clearAllFilter = ".t--clear-all-filter-btn";
private _addFilter = ".t--add-filter-btn";
_filterOperatorDropdown = ".t--table-filter-operators-dropdown";
private _downloadBtn = ".t--table-download-btn";
private _downloadOption = ".t--table-download-data-option";
_columnSettings = (
columnName: string,
type: "Edit" | "Visibility" | "Editable",
) => {
const classMap = {
Edit: "t--edit-column-btn",
Visibility: "t--show-column-btn",
Editable: "t--card-checkbox",
};
const classToCheck = classMap[type];
return `//input[@placeholder='Column title'][@value='${columnName}']/parent::div/parent::div/parent::div/parent::div/following-sibling::div/*[contains(@class, '${classToCheck}')]`;
};
_columnSettingsV2 = (
columnName: string,
type: "Edit" | "Visibility" | "Editable",
) => {
const classMap = {
Edit: ".t--edit-column-btn",
Visibility: ".t--show-column-btn",
Editable: ".t--card-checkbox",
};
const classToCheck = classMap[type];
return `.t--property-pane-view .tablewidgetv2-primarycolumn-list div[data-rbd-draggable-id=${columnName}] ${classToCheck}`;
};
_showPageItemsCount = "div.show-page-items";
_filtersCount = this._filterBtn + " span.action-title";
feat: Table one click binding for MongoDB and Postgres (#23629) > Pull Request Template > > Use this template to quickly create a well written pull request. Delete all quotes before creating the pull request. > ## Description > Add a TL;DR when description is extra long (helps content team) > > Please include a summary of the changes and which issue has been fixed. Please also include relevant motivation > and context. List any dependencies that are required for this change > > Links to Notion, Figma or any other documents that might be relevant to the PR > > #### PR fixes following issue(s) Fixes # (issue number) > 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) - Chore (housekeeping or task changes that don't impact user perception) - This change requires a documentation update > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - [x] Jest - [x] Cypress > > #### Test Plan > One Click Binding - https://github.com/appsmithorg/TestSmith/issues/2390 > #### 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 - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Test-plan-implementation#speedbreaker-features-to-consider-for-every-change) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans/_edit#areas-of-interest) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --------- Co-authored-by: Vemparala Surya Vamsi <vamsi@appsmith.com>
2023-06-01 17:26:05 +00:00
_headerCell = (column: string) =>
`.t--widget-tablewidgetv2 .thead .th:contains(${column})`;
chore: Refactor switching segments in Entity Explorer (#29130) ## Description Refactors the Entity Explorer Segment Switch so that we can update it with more options in the future. Also removes any unnecessary Segment Switch calls Updates the structure to make Sidebar and Left Pane configurable and separate from EditorNavigation #### PR fixes following issue(s) Fixes #28930 #### Type of change - Chore (housekeeping or task changes that don't impact user perception) ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [ ] Manual - [ ] JUnit - [ ] 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: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
2023-11-28 11:11:54 +00:00
public _addNewRow = ".t--add-new-row";
feat: Table one click binding for MongoDB and Postgres (#23629) > Pull Request Template > > Use this template to quickly create a well written pull request. Delete all quotes before creating the pull request. > ## Description > Add a TL;DR when description is extra long (helps content team) > > Please include a summary of the changes and which issue has been fixed. Please also include relevant motivation > and context. List any dependencies that are required for this change > > Links to Notion, Figma or any other documents that might be relevant to the PR > > #### PR fixes following issue(s) Fixes # (issue number) > 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) - Chore (housekeeping or task changes that don't impact user perception) - This change requires a documentation update > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - [x] Jest - [x] Cypress > > #### Test Plan > One Click Binding - https://github.com/appsmithorg/TestSmith/issues/2390 > #### 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 - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Test-plan-implementation#speedbreaker-features-to-consider-for-every-change) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans/_edit#areas-of-interest) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --------- Co-authored-by: Vemparala Surya Vamsi <vamsi@appsmith.com>
2023-06-01 17:26:05 +00:00
_saveNewRow = ".t--save-new-row";
fix: add null check for select options in table widget (#24902) ## Description This PR passes a `[]` to the select component when some values in the select options that are passed to the select cell component are `null`. This fixes issue where the table widget breaks when select options for the select column type contains `{{null}}` or `{{[null, null]}}` #### PR fixes following issue(s) Fixes #24857 #### Type of change - Bug fix (non-breaking change which fixes an issue) ## Testing #### How Has This Been Tested? - [x] Manual - To test that table widget does not break when `{{[null]}}`, `{{[null, null]}}`, `{{null}}` is passed to select options or new row select options. - To test that table widget does not break when select options or new row select options contains API binding that does not have any data - [ ] Jest - [x] Cypress - should test that select column dropdown has no results found string when select option is {{null}} - should test that select column dropdown has no results found string when select option is {{[null, null]}} #### 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 - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] 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: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
2023-06-29 07:07:41 +00:00
_discardRow = ".t--discard-new-row";
feat: Table one click binding for MongoDB and Postgres (#23629) > Pull Request Template > > Use this template to quickly create a well written pull request. Delete all quotes before creating the pull request. > ## Description > Add a TL;DR when description is extra long (helps content team) > > Please include a summary of the changes and which issue has been fixed. Please also include relevant motivation > and context. List any dependencies that are required for this change > > Links to Notion, Figma or any other documents that might be relevant to the PR > > #### PR fixes following issue(s) Fixes # (issue number) > 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) - Chore (housekeeping or task changes that don't impact user perception) - This change requires a documentation update > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - [x] Jest - [x] Cypress > > #### Test Plan > One Click Binding - https://github.com/appsmithorg/TestSmith/issues/2390 > #### 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 - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Test-plan-implementation#speedbreaker-features-to-consider-for-every-change) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans/_edit#areas-of-interest) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --------- Co-authored-by: Vemparala Surya Vamsi <vamsi@appsmith.com>
2023-06-01 17:26:05 +00:00
_searchInput = ".t--search-input input";
_bodyCell = (cellValue: string) =>
`.t--table-text-cell:contains(${cellValue})`;
private _newRow = ".new-row";
feat: Table one click binding for MongoDB and Postgres (#23629) > Pull Request Template > > Use this template to quickly create a well written pull request. Delete all quotes before creating the pull request. > ## Description > Add a TL;DR when description is extra long (helps content team) > > Please include a summary of the changes and which issue has been fixed. Please also include relevant motivation > and context. List any dependencies that are required for this change > > Links to Notion, Figma or any other documents that might be relevant to the PR > > #### PR fixes following issue(s) Fixes # (issue number) > 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) - Chore (housekeeping or task changes that don't impact user perception) - This change requires a documentation update > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - [x] Jest - [x] Cypress > > #### Test Plan > One Click Binding - https://github.com/appsmithorg/TestSmith/issues/2390 > #### 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 - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Test-plan-implementation#speedbreaker-features-to-consider-for-every-change) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans/_edit#areas-of-interest) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --------- Co-authored-by: Vemparala Surya Vamsi <vamsi@appsmith.com>
2023-06-01 17:26:05 +00:00
_connectDataHeader = ".t--cypress-table-overlay-header";
_connectDataButton = ".t--cypress-table-overlay-connectdata";
_updateMode = (mode: "Single" | "Multi") =>
"//span[text()='" + mode + " Row']/ancestor::div";
test: added cypress test (#24707) ## Description This PR adds cypress test for the following issue: https://github.com/appsmithorg/appsmith/pull/24005 #### PR fixes following issue(s) Fixes #24522 #24005 #### Type of change - Chore (housekeeping or task changes that don't impact user perception) ## Testing > #### How Has This Been Tested? - [ ] Manual - [ ] Jest - [x] 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: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
2023-06-22 05:52:13 +00:00
_hideMenu = ".hide-menu";
fix: table search is not working properly for url colums (#24244) ## Description - If we have a column type of `url` in table, the search considers the computed value and filters data based on that. But the search should take the display text as the search value to filter data. #### PR fixes following issue(s) Fixes #23636 #### Media #### Type of change - Bug fix (non-breaking change which fixes an issue) ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - [x] Jest - [x] 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 - [x] My code follows the style guidelines of this project - [x] 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 - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Test-plan-implementation#speedbreaker-features-to-consider-for-every-change) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans/_edit#areas-of-interest) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
2023-06-21 12:01:06 +00:00
_tableColumnHeaderMenuTrigger = (columnName: string) =>
`${this._columnHeaderDiv(columnName)} .header-menu .bp3-popover2-target`;
_columnHeaderMenu = ".bp3-menu";
fix: add null check for select options in table widget (#24902) ## Description This PR passes a `[]` to the select component when some values in the select options that are passed to the select cell component are `null`. This fixes issue where the table widget breaks when select options for the select column type contains `{{null}}` or `{{[null, null]}}` #### PR fixes following issue(s) Fixes #24857 #### Type of change - Bug fix (non-breaking change which fixes an issue) ## Testing #### How Has This Been Tested? - [x] Manual - To test that table widget does not break when `{{[null]}}`, `{{[null, null]}}`, `{{null}}` is passed to select options or new row select options. - To test that table widget does not break when select options or new row select options contains API binding that does not have any data - [ ] Jest - [x] Cypress - should test that select column dropdown has no results found string when select option is {{null}} - should test that select column dropdown has no results found string when select option is {{[null, null]}} #### 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 - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] 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: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
2023-06-29 07:07:41 +00:00
_selectMenuItem = ".menu-item-text";
_columnCheckbox = (columnName: string) =>
"[data-rbd-draggable-id='" + columnName + "']" + " .t--card-checkbox input";
_dateInputPopover = ".bp3-dateinput-popover";
chore: Make use of widget methods to get binding properties in sniping mode (#25429) ## Description - Refactoring sniping mode code to fix abstraction leak and to optimise the process further. #### PR fixes following issue(s) Fixes #24737 #### 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 - Chore (housekeeping or task changes that don't impact user perception) > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - [x] Jest - [x] 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 - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
2023-07-26 05:38:11 +00:00
_tableV2Widget = ".t--draggable-tablewidgetv2";
_tableV2Row = ".t--draggable-tablewidgetv2 .tbody";
_weekdayRowDayPicker =
".bp3-datepicker .DayPicker .DayPicker-Months .DayPicker-WeekdaysRow";
_popoverErrorMsg = (msg: string) =>
"//div[@class='bp3-popover-content' and contains(text(),'" + msg + "')]";
_datePicker = ".bp3-datepicker";
_dayPickerWeek = ".bp3-datepicker .DayPicker .DayPicker-Body .DayPicker-Week";
_timePickerHour = ".bp3-timepicker-input-row .bp3-timepicker-hour";
_timePickerMinute = ".bp3-timepicker-input-row .bp3-timepicker-minute";
_timePickerSecond = ".bp3-timepicker-input-row .bp3-timepicker-second";
_timePickerRow = ".bp3-timepicker-input-row";
_tableV2Head = ".t--draggable-tablewidgetv2 .thead";
_timeprecisionPopover =
".t--property-control-timeprecision .bp3-popover-target";
_tableRow1Child3 =
".t--draggable-tablewidgetv2 .tbody .tr:nth-child(1) div:nth-child(3)";
_draggableHeader = " .draggable-header";
_lastChildDatePicker = "div:last-child .react-datepicker-wrapper";
_codeMirrorError = ".t--codemirror-has-error";
_canvasWidgetType = "[type='CANVAS_WIDGET']";
_showArrow = ".rc-select-show-arrow";
_codeEditorWrapper = ".t--code-editor-wrapper";
_dateRangePickerShortcuts =
".bp3-dateinput-popover .bp3-daterangepicker-shortcuts";
_dayPickerFirstChild = ".DayPicker-Day:first-child";
_divFirstChild = "div:first-child abbr";
_listPreviousPage = ".rc-pagination-prev";
_listNavigation = (move: string) =>
"//button[@aria-label='" + move + " page']";
_listNextPage = ".rc-pagination-next";
_listActivePage = (version: "v1" | "v2") =>
`.t--widget-listwidget${
version == "v1" ? "" : version
} .rc-pagination-item-active`;
_paginationItem = (value: number) => `.rc-pagination-item-${value}`;
_cellWrapOff = "//div[@class='tableWrap virtual']";
_cellWrapOn = "//div[@class='tableWrap']";
_multirowselect = ".t--table-multiselect";
_selectedrow = ".selected-row";
fix: Makes use of mobile positioning properties in Table Widget (#24729) ## Description Table widget's pageSize property was not taking account of mobile position properties (`mobileTopRow` and `mobileBottomRow`) in Auto Layout mode. This caused the issues mentioned in this PR. Since this is a derived property, properties such as `isMobile` and `appPositioningType` were not directly available. So, we added these into the DataTree as well. #### PR fixes following issue(s) Fixes #22907 Fixes #22911 #### 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 - Bug fix (non-breaking change which fixes an issue) > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] 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 - [x] My code follows the style guidelines of this project - [x] 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 - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --------- Co-authored-by: rahulramesha <rahul@appsmith.com>
2023-07-17 05:42:52 +00:00
public GetNumberOfRows() {
return this.agHelper.GetElement(this._tr).its("length");
}
public WaitUntilTableLoad(
rowIndex = 0,
colIndex = 0,
tableVersion: "v1" | "v2" = "v1",
) {
// this.agHelper
// .GetElement(this._tableRowColumnData(rowIndex, colIndex, tableVersion), 30000)
// .waitUntil(($ele) =>
// cy
// .wrap($ele)
// .children("button")
// .should("have.length", 0),
// );
//or above will also work:
this.agHelper.AssertElementAbsence(
this._tableLoadStateDelete(tableVersion),
30000,
); //For CURD generated pages Delete button appears first when table is loading & not fully loaded, hence validating that here!
cy.waitUntil(
() => this.ReadTableRowColumnData(rowIndex, colIndex, tableVersion),
{
errorMsg: "Table is not populated",
timeout: 10000,
interval: 2000,
},
).then((cellData) => {
expect(cellData).not.empty;
});
this.agHelper.Sleep(500); //for table to settle loading!
}
public AssertTableLoaded(
rowIndex = 0,
colIndex = 0,
tableVersion: "v1" | "v2" = "v1",
) {
this.agHelper
test: Cypress | Replace static with Dynamic waits - Part 1 (#29405) ## Description - Removed hard waits from below specs: - Apps/CurrencyInputIssue_Spec.js - ClientSide/Widgets/Modal/Modal_spec.ts (Fix & unskip) - /Binding/TableV2_Widget_API_Pagination_spec.js - Unskip - ApiTests/API_Unique_name_spec.js - Flaky fix - TableV2_Widget_API_Pagination_spec.js - Flaky fix - /ServerSide/QueryPane/S3_1_spec.js - Removed empty ReusableHelper.ts - Improved agHelper.GetElement() to include the assertion for element presence/absence - Modified helpers/function calls to fit the above syntax of GetElement() - Improved WaitUntilEleAppear(), WaitUntilEleDisappear() to use timeout from cypress config #### Type of change - Script fix (non-breaking change which fixes an issue) ## Testing #### How Has This Been Tested? - [X] Cypress CI runs ## Checklist: #### QA activity: - [X] Added `Test Plan Approved` label after Cypress tests were reviewed <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary by CodeRabbit - **Tests** - Enhanced end-to-end test stability by replacing static waits with dynamic element-based synchronization. - Skipped certain test suites to streamline the testing process. - Improved test assertions and control flow for more reliable verification of UI components. - **Chores** - Updated test helper methods to support new verification strategies. - Cleaned up unnecessary imports and inheritance in test support classes. - **Documentation** - Adjusted test case descriptions to reflect the new synchronization methods used. - **Bug Fixes** - Fixed issues with test synchronization that could lead to flaky test results. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
2023-12-11 09:09:36 +00:00
.GetElement(this._tableRowColumnData(rowIndex, colIndex, tableVersion))
.waitUntil(($ele) =>
chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> ## Description This PR upgrades Prettier to v2 + enforces TypeScript’s [`import type`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export) syntax where applicable. It’s submitted as a separate PR so we can merge it easily. As a part of this PR, we reformat the codebase heavily: - add `import type` everywhere where it’s required, and - re-format the code to account for Prettier 2’s breaking changes: https://prettier.io/blog/2020/03/21/2.0.0.html#breaking-changes This PR is submitted against `release` to make sure all new code by team members will adhere to new formatting standards, and we’ll have fewer conflicts when merging `bundle-optimizations` into `release`. (I’ll merge `release` back into `bundle-optimizations` once this PR is merged.) ### Why is this needed? This PR is needed because, for the Lodash optimization from https://github.com/appsmithorg/appsmith/commit/7cbb12af886621256224be0c93e6a465dd710ad3, we need to use `import type`. Otherwise, `babel-plugin-lodash` complains that `LoDashStatic` is not a lodash function. However, just using `import type` in the current codebase will give you this: <img width="962" alt="Screenshot 2023-03-08 at 17 45 59" src="https://user-images.githubusercontent.com/2953267/223775744-407afa0c-e8b9-44a1-90f9-b879348da57f.png"> That’s because Prettier 1 can’t parse `import type` at all. To parse it, we need to upgrade to Prettier 2. ### Why enforce `import type`? Apart from just enabling `import type` support, this PR enforces specifying `import type` everywhere it’s needed. (Developers will get immediate TypeScript and ESLint errors when they forget to do so.) I’m doing this because I believe `import type` improves DX and makes refactorings easier. Let’s say you had a few imports like below. Can you tell which of these imports will increase the bundle size? (Tip: it’s not all of them!) ```ts // app/client/src/workers/Linting/utils.ts import { Position } from "codemirror"; import { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` It’s pretty hard, right? What about now? ```ts // app/client/src/workers/Linting/utils.ts import type { Position } from "codemirror"; import type { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` Now, it’s clear that only `lodash` will be bundled. This helps developers to see which imports are problematic, but it _also_ helps with refactorings. Now, if you want to see where `codemirror` is bundled, you can just grep for `import \{.*\} from "codemirror"` – and you won’t get any type-only imports. This also helps (some) bundlers. Upon transpiling, TypeScript erases type-only imports completely. In some environment (not ours), this makes the bundle smaller, as the bundler doesn’t need to bundle type-only imports anymore. ## Type of change - Chore (housekeeping or task changes that don't impact user perception) ## How Has This Been Tested? This was tested to not break the build. ### 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 - [x] 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 - [x] 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 --------- Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
2023-03-16 11:41:47 +00:00
cy.wrap($ele).children("span").should("not.be.empty"),
);
}
public WaitForTableEmpty(tableVersion: "v1" | "v2" = "v1") {
this.agHelper
test: Cypress | Replace static with Dynamic waits - Part 1 (#29405) ## Description - Removed hard waits from below specs: - Apps/CurrencyInputIssue_Spec.js - ClientSide/Widgets/Modal/Modal_spec.ts (Fix & unskip) - /Binding/TableV2_Widget_API_Pagination_spec.js - Unskip - ApiTests/API_Unique_name_spec.js - Flaky fix - TableV2_Widget_API_Pagination_spec.js - Flaky fix - /ServerSide/QueryPane/S3_1_spec.js - Removed empty ReusableHelper.ts - Improved agHelper.GetElement() to include the assertion for element presence/absence - Modified helpers/function calls to fit the above syntax of GetElement() - Improved WaitUntilEleAppear(), WaitUntilEleDisappear() to use timeout from cypress config #### Type of change - Script fix (non-breaking change which fixes an issue) ## Testing #### How Has This Been Tested? - [X] Cypress CI runs ## Checklist: #### QA activity: - [X] Added `Test Plan Approved` label after Cypress tests were reviewed <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary by CodeRabbit - **Tests** - Enhanced end-to-end test stability by replacing static waits with dynamic element-based synchronization. - Skipped certain test suites to streamline the testing process. - Improved test assertions and control flow for more reliable verification of UI components. - **Chores** - Updated test helper methods to support new verification strategies. - Cleaned up unnecessary imports and inheritance in test support classes. - **Documentation** - Adjusted test case descriptions to reflect the new synchronization methods used. - **Bug Fixes** - Fixed issues with test synchronization that could lead to flaky test results. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
2023-12-11 09:09:36 +00:00
.GetElement(this._tableEmptyColumnData(tableVersion), "noVerify")
.children()
.should("have.length", 0); //or below
//expect($children).to.have.lengthOf(0)
this.agHelper.Sleep(500);
}
public AssertTableHeaderOrder(expectedOrder: string) {
cy.get(this._tableHeader)
.invoke("text")
.then((x) => {
expect(x).to.eq(expectedOrder);
});
}
public AssertColumnFreezeStatus(columnName: string, freezed = true) {
if (freezed) {
this.agHelper
.GetElement(this._columnHeaderDiv(columnName))
.then(($elem) => {
expect($elem.attr("data-sticky-td")).to.equal("true");
});
} else {
this.agHelper
.GetElement(this._columnHeaderDiv(columnName))
.should("not.have.attr", "data-sticky-td");
}
}
public ReadTableRowColumnData(
rowNum: number,
colNum: number,
tableVersion: "v1" | "v2" = "v1",
timeout = 1000,
) {
//timeout can be sent higher values incase of larger tables
this.agHelper.Sleep(timeout); //Settling time for table!
return this.agHelper
test: Cypress | Replace static with Dynamic waits - Part 1 (#29405) ## Description - Removed hard waits from below specs: - Apps/CurrencyInputIssue_Spec.js - ClientSide/Widgets/Modal/Modal_spec.ts (Fix & unskip) - /Binding/TableV2_Widget_API_Pagination_spec.js - Unskip - ApiTests/API_Unique_name_spec.js - Flaky fix - TableV2_Widget_API_Pagination_spec.js - Flaky fix - /ServerSide/QueryPane/S3_1_spec.js - Removed empty ReusableHelper.ts - Improved agHelper.GetElement() to include the assertion for element presence/absence - Modified helpers/function calls to fit the above syntax of GetElement() - Improved WaitUntilEleAppear(), WaitUntilEleDisappear() to use timeout from cypress config #### Type of change - Script fix (non-breaking change which fixes an issue) ## Testing #### How Has This Been Tested? - [X] Cypress CI runs ## Checklist: #### QA activity: - [X] Added `Test Plan Approved` label after Cypress tests were reviewed <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary by CodeRabbit - **Tests** - Enhanced end-to-end test stability by replacing static waits with dynamic element-based synchronization. - Skipped certain test suites to streamline the testing process. - Improved test assertions and control flow for more reliable verification of UI components. - **Chores** - Updated test helper methods to support new verification strategies. - Cleaned up unnecessary imports and inheritance in test support classes. - **Documentation** - Adjusted test case descriptions to reflect the new synchronization methods used. - **Bug Fixes** - Fixed issues with test synchronization that could lead to flaky test results. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
2023-12-11 09:09:36 +00:00
.GetElement(this._tableRowColumnData(rowNum, colNum, tableVersion))
.invoke("text");
}
public AssertTableRowImageColumnIsLoaded(
rowNum: number,
colNum: number,
timeout = 200,
tableVersion: "v1" | "v2" = "v1",
) {
//timeout can be sent higher values incase of larger tables
this.agHelper.Sleep(timeout); //Settling time for table!
return cy
.get(this._tableRowImageColumnData(rowNum, colNum, tableVersion))
.invoke("attr", "style")
.should("not.be.empty");
}
public AssertHiddenColumns(columnNames: string[]) {
columnNames.forEach(($header) => {
cy.xpath(this._columnHeader($header))
.invoke("attr", "class")
.then((classes) => {
expect(classes).includes("hidden-header");
});
});
}
public NavigateToNextPage(
isServerPagination = true,
tableVersion: "v1" | "v2" = "v1",
) {
let curPageNo: number;
if (tableVersion == "v1") {
this.agHelper
.GetText(
isServerPagination
? this._pageNumberServerSidePagination
: this._pageNumberClientSidePagination,
isServerPagination ? "text" : "val",
)
.then(($currentPageNo) => (curPageNo = Number($currentPageNo)));
cy.get(this._nextPage(tableVersion)).click();
this.agHelper
.GetText(
isServerPagination
? this._pageNumberServerSidePagination
: this._pageNumberClientSidePagination,
isServerPagination ? "text" : "val",
)
.then(($newPageNo) => expect(Number($newPageNo)).to.eq(curPageNo + 1));
} else if (tableVersion == "v2") {
cy.get(this._pageNumber)
.invoke("text")
.then(($currentPageNo) => (curPageNo = Number($currentPageNo)));
cy.get(this._nextPage(tableVersion)).click();
cy.get(this._pageNumber)
.invoke("text")
.then(($newPageNo) => expect(Number($newPageNo)).to.eq(curPageNo + 1));
}
}
public NavigateToPreviousPage(
isServerPagination = true,
tableVersion: "v1" | "v2" = "v1",
) {
let curPageNo: number;
if (tableVersion == "v1") {
this.agHelper
.GetText(
isServerPagination
? this._pageNumberServerSidePagination
: this._pageNumberClientSidePagination,
isServerPagination ? "text" : "val",
)
.then(($currentPageNo) => (curPageNo = Number($currentPageNo)));
cy.get(this._previousPage(tableVersion)).click();
this.agHelper
.GetText(
isServerPagination
? this._pageNumberServerSidePagination
: this._pageNumberClientSidePagination,
isServerPagination ? "text" : "val",
)
.then(($newPageNo) => expect(Number($newPageNo)).to.eq(curPageNo - 1));
} else if (tableVersion == "v2") {
cy.get(this._pageNumber)
.invoke("text")
.then(($currentPageNo) => (curPageNo = Number($currentPageNo)));
cy.get(this._previousPage(tableVersion)).click();
cy.get(this._pageNumber)
.invoke("text")
.then(($newPageNo) => expect(Number($newPageNo)).to.eq(curPageNo - 1));
}
}
public AssertPageNumber(
pageNo: number,
serverSide: "Off" | "On" | "" = "On",
tableVersion: "v1" | "v2" = "v1",
) {
const serverSideOn =
tableVersion == "v1"
? this._pageNumberServerSidePagination
: this._pageNumber;
const serverSideOff =
tableVersion == "v1"
? this._pageNumberClientSidePagination
: this._pageNumberServerSideOff;
if (serverSide == "On")
cy.get(serverSideOn).should("have.text", Number(pageNo));
else {
cy.get(serverSideOff).should("have.value", Number(pageNo));
cy.get(this._previousPage(tableVersion)).should("have.attr", "disabled");
cy.get(this._nextPage(tableVersion)).should("have.attr", "disabled");
}
if (pageNo == 1)
cy.get(this._previousPage(tableVersion)).should("have.attr", "disabled");
}
public AssertSelectedRow(rowNum = 0) {
cy.xpath(this._tableSelectedRow)
.invoke("attr", "data-rowindex")
.then(($rowIndex) => {
expect(Number($rowIndex)).to.eq(rowNum);
});
}
public SelectTableRow(
rowIndex: number,
columnIndex = 0,
select = true,
tableVersion: "v1" | "v2" = "v1",
) {
//rowIndex - 0 for 1st row
this.agHelper
.GetElement(this._tableRow(rowIndex, columnIndex, tableVersion))
.parent("div")
.invoke("attr", "class")
.then(($classes: any) => {
if (
(select && !$classes?.includes("selected-row")) ||
(!select && $classes?.includes("selected-row"))
)
this.agHelper.GetNClick(
this._tableRow(rowIndex, columnIndex, tableVersion),
0,
true,
);
});
this.agHelper.Sleep(); //for select to reflect
}
public AssertSearchText(searchTxt: string, index = 0) {
cy.get(this._searchTableInput).eq(index).should("have.value", searchTxt);
}
public SearchTable(searchTxt: string, index = 0) {
this.agHelper.TypeText(this._searchTableInput, searchTxt, index);
}
public ResetSearch() {
this.agHelper.GetNClick(this._searchBoxCross);
}
public RemoveSearchTextNVerify(
cellDataAfterSearchRemoved: string,
tableVersion: "v1" | "v2" = "v1",
) {
this.ResetSearch();
this.ReadTableRowColumnData(0, 0, tableVersion).then(
(aftSearchRemoved: any) => {
expect(aftSearchRemoved).to.eq(cellDataAfterSearchRemoved);
},
);
}
public OpenFilter() {
this.agHelper.GetNClick(this._filterBtn);
}
public OpenNFilterTable(
colName: string,
colCondition: filterTypes,
inputText = "",
operator: "AND" | "OR" | "" = "",
index = 0,
) {
if (operator) {
this.agHelper.GetNClick(this._addFilter);
this.agHelper.GetNClick(this._filterOperatorDropdown);
this.agHelper.GetNClickByContains(this.locator._dropdownText, operator);
} else this.OpenFilter();
this.agHelper.GetNClick(this._filterColumnsDropdown, index);
this.agHelper.GetNClickByContains(this.locator._dropdownText, colName);
this.agHelper.GetNClick(this._filterConditionDropdown, index);
this.agHelper.GetNClickByContains(this.locator._dropdownText, colCondition);
if (inputText)
this.agHelper
.GetNClick(this._filterInputValue, index)
.type(inputText)
.wait(500);
this.agHelper.GetNClick(this._filterApplyBtn);
//this.agHelper.ClickButton("APPLY")
}
public RemoveFilter(toClose = true, removeOne = false, index = 0) {
if (removeOne) this.agHelper.GetNClick(this._removeFilter, index);
else this.agHelper.GetNClick(this._clearAllFilter);
if (toClose) this.CloseFilter();
}
public RemoveFilterNVerify(
cellDataAfterFilterRemoved: string,
toClose = true,
removeOne = true,
index = 0,
tableVersion: "v1" | "v2" = "v1",
) {
this.RemoveFilter(toClose, removeOne, index);
this.ReadTableRowColumnData(0, 0, tableVersion).then(
(aftFilterRemoved: any) => {
expect(aftFilterRemoved).to.eq(cellDataAfterFilterRemoved);
},
);
}
public CloseFilter() {
this.agHelper.GetNClick(this._filterCloseBtn);
}
public DownloadFromTable(filetype: "Download as CSV" | "Download as Excel") {
cy.get(this._downloadBtn).click({ force: true });
chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> ## Description This PR upgrades Prettier to v2 + enforces TypeScript’s [`import type`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export) syntax where applicable. It’s submitted as a separate PR so we can merge it easily. As a part of this PR, we reformat the codebase heavily: - add `import type` everywhere where it’s required, and - re-format the code to account for Prettier 2’s breaking changes: https://prettier.io/blog/2020/03/21/2.0.0.html#breaking-changes This PR is submitted against `release` to make sure all new code by team members will adhere to new formatting standards, and we’ll have fewer conflicts when merging `bundle-optimizations` into `release`. (I’ll merge `release` back into `bundle-optimizations` once this PR is merged.) ### Why is this needed? This PR is needed because, for the Lodash optimization from https://github.com/appsmithorg/appsmith/commit/7cbb12af886621256224be0c93e6a465dd710ad3, we need to use `import type`. Otherwise, `babel-plugin-lodash` complains that `LoDashStatic` is not a lodash function. However, just using `import type` in the current codebase will give you this: <img width="962" alt="Screenshot 2023-03-08 at 17 45 59" src="https://user-images.githubusercontent.com/2953267/223775744-407afa0c-e8b9-44a1-90f9-b879348da57f.png"> That’s because Prettier 1 can’t parse `import type` at all. To parse it, we need to upgrade to Prettier 2. ### Why enforce `import type`? Apart from just enabling `import type` support, this PR enforces specifying `import type` everywhere it’s needed. (Developers will get immediate TypeScript and ESLint errors when they forget to do so.) I’m doing this because I believe `import type` improves DX and makes refactorings easier. Let’s say you had a few imports like below. Can you tell which of these imports will increase the bundle size? (Tip: it’s not all of them!) ```ts // app/client/src/workers/Linting/utils.ts import { Position } from "codemirror"; import { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` It’s pretty hard, right? What about now? ```ts // app/client/src/workers/Linting/utils.ts import type { Position } from "codemirror"; import type { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` Now, it’s clear that only `lodash` will be bundled. This helps developers to see which imports are problematic, but it _also_ helps with refactorings. Now, if you want to see where `codemirror` is bundled, you can just grep for `import \{.*\} from "codemirror"` – and you won’t get any type-only imports. This also helps (some) bundlers. Upon transpiling, TypeScript erases type-only imports completely. In some environment (not ours), this makes the bundle smaller, as the bundler doesn’t need to bundle type-only imports anymore. ## Type of change - Chore (housekeeping or task changes that don't impact user perception) ## How Has This Been Tested? This was tested to not break the build. ### 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 - [x] 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 - [x] 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 --------- Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
2023-03-16 11:41:47 +00:00
cy.get(this._downloadOption).contains(filetype).click({ force: true });
}
public ValidateDownloadNVerify(fileName: string, textToBePresent = "") {
let downloadsFolder = Cypress.config("downloadsFolder");
cy.log("downloadsFolder is:" + downloadsFolder);
cy.readFile(path.join(downloadsFolder, fileName)).should("exist");
textToBePresent && this.VerifyDownloadedFile(fileName, textToBePresent);
}
public VerifyDownloadedFile(fileName: string, textToBePresent: string) {
const downloadedFilename = Cypress.config("downloadsFolder")
.concat("/")
.concat(fileName);
cy.readFile(downloadedFilename, "binary", {
timeout: 15000,
}).should((buffer) => expect(buffer).to.contain(textToBePresent));
}
public ChangeColumnType(
columnName: string,
newDataType: columnTypeValues,
tableVersion: "v1" | "v2" = "v1",
) {
this.EditColumn(columnName, tableVersion);
this.propPane.SelectPropertiesDropDown("Column type", newDataType);
this.assertHelper.AssertNetworkStatus("@updateLayout");
if (tableVersion == "v2") this.propPane.NavigateBackToPropertyPane();
}
public AssertURLColumnNavigation(
row: number,
col: number,
expectedURL: string,
tableVersion: "v1" | "v2" = "v1",
networkCall = "getConsolidatedData",
) {
this.deployMode.StubWindowNAssert(
this._tableRowColumnData(row, col, tableVersion),
expectedURL,
networkCall,
);
this.WaitUntilTableLoad(0, 0, tableVersion);
}
public AddNewRow() {
this.agHelper.GetNClick(this._addNewRow);
this.agHelper.AssertElementExist(this._newRow);
}
public AddColumn(colId: string) {
cy.get(this._addColumn).scrollIntoView();
chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> ## Description This PR upgrades Prettier to v2 + enforces TypeScript’s [`import type`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export) syntax where applicable. It’s submitted as a separate PR so we can merge it easily. As a part of this PR, we reformat the codebase heavily: - add `import type` everywhere where it’s required, and - re-format the code to account for Prettier 2’s breaking changes: https://prettier.io/blog/2020/03/21/2.0.0.html#breaking-changes This PR is submitted against `release` to make sure all new code by team members will adhere to new formatting standards, and we’ll have fewer conflicts when merging `bundle-optimizations` into `release`. (I’ll merge `release` back into `bundle-optimizations` once this PR is merged.) ### Why is this needed? This PR is needed because, for the Lodash optimization from https://github.com/appsmithorg/appsmith/commit/7cbb12af886621256224be0c93e6a465dd710ad3, we need to use `import type`. Otherwise, `babel-plugin-lodash` complains that `LoDashStatic` is not a lodash function. However, just using `import type` in the current codebase will give you this: <img width="962" alt="Screenshot 2023-03-08 at 17 45 59" src="https://user-images.githubusercontent.com/2953267/223775744-407afa0c-e8b9-44a1-90f9-b879348da57f.png"> That’s because Prettier 1 can’t parse `import type` at all. To parse it, we need to upgrade to Prettier 2. ### Why enforce `import type`? Apart from just enabling `import type` support, this PR enforces specifying `import type` everywhere it’s needed. (Developers will get immediate TypeScript and ESLint errors when they forget to do so.) I’m doing this because I believe `import type` improves DX and makes refactorings easier. Let’s say you had a few imports like below. Can you tell which of these imports will increase the bundle size? (Tip: it’s not all of them!) ```ts // app/client/src/workers/Linting/utils.ts import { Position } from "codemirror"; import { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` It’s pretty hard, right? What about now? ```ts // app/client/src/workers/Linting/utils.ts import type { Position } from "codemirror"; import type { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` Now, it’s clear that only `lodash` will be bundled. This helps developers to see which imports are problematic, but it _also_ helps with refactorings. Now, if you want to see where `codemirror` is bundled, you can just grep for `import \{.*\} from "codemirror"` – and you won’t get any type-only imports. This also helps (some) bundlers. Upon transpiling, TypeScript erases type-only imports completely. In some environment (not ours), this makes the bundle smaller, as the bundler doesn’t need to bundle type-only imports anymore. ## Type of change - Chore (housekeeping or task changes that don't impact user perception) ## How Has This Been Tested? This was tested to not break the build. ### 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 - [x] 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 - [x] 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 --------- Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
2023-03-16 11:41:47 +00:00
cy.get(this._addColumn).should("be.visible").click({ force: true });
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(3000);
cy.get(this._defaultColName).clear({
force: true,
});
cy.get(this._defaultColName).type(colId, { force: true });
}
public EditColumn(columnName: string, tableVersion: "v1" | "v2") {
const colSettings =
tableVersion == "v1"
? this._columnSettings(columnName, "Edit")
: this._columnSettingsV2(columnName, "Edit");
this.agHelper.GetNClick(colSettings);
}
public EnableVisibilityOfColumn(
columnName: string,
tableVersion: "v1" | "v2",
) {
const colSettings =
tableVersion == "v1"
? this._columnSettings(columnName, "Visibility")
: this._columnSettingsV2(columnName, "Visibility");
this.agHelper.GetNClick(colSettings);
}
public EnableEditableOfColumn(
columnName: string,
tableVersion: "v1" | "v2" = "v2",
) {
const colSettings =
tableVersion == "v1"
? this._columnSettings(columnName, "Editable")
: this._columnSettingsV2(columnName, "Editable");
this.agHelper.GetNClick(colSettings);
}
public ClickOnEditIcon(rowIndex: number, colIndex: number) {
this.agHelper.HoverElement(this._tableRow(rowIndex, colIndex, "v2"));
this.agHelper.GetNClick(
this._tableRow(rowIndex, colIndex, "v2") + " " + this._editCellIconDiv,
0,
true,
);
this.agHelper.AssertElementVisibility(
this._tableRow(rowIndex, colIndex, "v2") +
" " +
this._editCellEditorInput,
);
}
public EditTableCell(
rowIndex: number,
colIndex: number,
newValue: "" | number | string,
toSaveNewValue = true,
) {
this.ClickOnEditIcon(rowIndex, colIndex);
this.UpdateTableCell(
rowIndex,
colIndex,
newValue.toString(),
toSaveNewValue,
);
this.agHelper.Sleep();
}
public UpdateTableCell(
rowIndex: number,
colIndex: number,
newValue: "" | number | string,
toSaveNewValue = false,
force = false,
) {
this.agHelper.ClearNType(
this._tableRow(rowIndex, colIndex, "v2") +
" " +
this._editCellEditorInput,
newValue.toString(),
);
toSaveNewValue &&
this.agHelper.TypeText(this._editCellEditorInput, "{enter}", {
parseSpecialCharSeq: true,
});
}
public DeleteColumn(colId: string) {
this.propPane.NavigateBackToPropertyPane();
cy.get(
"[data-rbd-draggable-id='" + colId + "'] .t--delete-column-btn",
).click({
force: true,
});
cy.wait(1000);
}
//List methods - keeping it for now!
public NavigateToNextPage_List(tableVersion: "v1" | "v2" = "v1", index = 0) {
let curPageNo: number;
if (tableVersion == "v1") {
cy.xpath(this._liCurrentSelectedPage)
.invoke("text")
.then(($currentPageNo) => (curPageNo = Number($currentPageNo)));
cy.get(this._listNextPage).click();
//cy.scrollTo('top', { easing: 'linear' })
cy.xpath(this._liCurrentSelectedPage)
.invoke("text")
.then(($newPageNo) => expect(Number($newPageNo)).to.eq(curPageNo + 1));
} else if (tableVersion == "v2") {
this.agHelper
.GetText(this._listActivePage(tableVersion), "text", index)
.then(($currentPageNo) => (curPageNo = Number($currentPageNo)));
this.agHelper.GetNClick(this._listNextPage, index);
this.agHelper.Sleep(1000);
this.agHelper
.GetText(this._listActivePage(tableVersion), "text", index)
.then(($newPageNo) => expect(Number($newPageNo)).to.eq(curPageNo + 1));
}
}
public NavigateToPreviousPage_List(
tableVersion: "v1" | "v2" = "v1",
index = 0,
) {
let curPageNo: number;
this.agHelper
.GetText(this._listActivePage(tableVersion), "text", index)
.then(($currentPageNo) => (curPageNo = Number($currentPageNo)));
this.agHelper.GetNClick(this._liPreviousPage, index);
this.agHelper.Sleep(1000);
this.agHelper
.GetText(this._listActivePage(tableVersion), "text", index)
.then(($newPageNo) => expect(Number($newPageNo)).to.eq(curPageNo - 1));
//}
}
public AssertPageNumber_List(
pageNo: number,
checkNoNextPage = false,
tableVersion: "v1" | "v2" = "v1",
) {
if (tableVersion == "v1") {
cy.xpath(this._liCurrentSelectedPage)
.invoke("text")
.then(($currentPageNo) => expect(Number($currentPageNo)).to.eq(pageNo));
if (pageNo == 1)
this.agHelper.AssertAttribute(
this._liPreviousPage,
"aria-disabled",
"true",
);
if (checkNoNextPage)
this.agHelper.AssertAttribute(
this._listNextPage,
"aria-disabled",
"true",
);
else
this.agHelper.AssertAttribute(
this._listNextPage,
"aria-disabled",
"false",
);
} else if (tableVersion == "v2") {
this.agHelper
.GetText(this._listActivePage(tableVersion), "text")
.then(($currentPageNo) => expect(Number($currentPageNo)).to.eq(pageNo));
if (pageNo == 1)
this.agHelper
.GetElement(this._listPreviousPage)
.should("have.class", "rc-pagination-disabled");
if (checkNoNextPage)
this.agHelper
.GetElement(this._listNextPage)
.should("have.class", "rc-pagination-disabled");
else
this.agHelper
.GetElement(this._listNextPage)
.should("not.have.class", "rc-pagination-disabled");
}
}
feat: Table one click binding for MongoDB and Postgres (#23629) > Pull Request Template > > Use this template to quickly create a well written pull request. Delete all quotes before creating the pull request. > ## Description > Add a TL;DR when description is extra long (helps content team) > > Please include a summary of the changes and which issue has been fixed. Please also include relevant motivation > and context. List any dependencies that are required for this change > > Links to Notion, Figma or any other documents that might be relevant to the PR > > #### PR fixes following issue(s) Fixes # (issue number) > 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) - Chore (housekeeping or task changes that don't impact user perception) - This change requires a documentation update > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - [x] Jest - [x] Cypress > > #### Test Plan > One Click Binding - https://github.com/appsmithorg/TestSmith/issues/2390 > #### 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 - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Test-plan-implementation#speedbreaker-features-to-consider-for-every-change) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans/_edit#areas-of-interest) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --------- Co-authored-by: Vemparala Surya Vamsi <vamsi@appsmith.com>
2023-06-01 17:26:05 +00:00
public AddSampleTableData() {
this.propPane.EnterJSContext("Table data", JSON.stringify(sampleTableData));
feat: Table one click binding for MongoDB and Postgres (#23629) > Pull Request Template > > Use this template to quickly create a well written pull request. Delete all quotes before creating the pull request. > ## Description > Add a TL;DR when description is extra long (helps content team) > > Please include a summary of the changes and which issue has been fixed. Please also include relevant motivation > and context. List any dependencies that are required for this change > > Links to Notion, Figma or any other documents that might be relevant to the PR > > #### PR fixes following issue(s) Fixes # (issue number) > 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) - Chore (housekeeping or task changes that don't impact user perception) - This change requires a documentation update > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - [x] Jest - [x] Cypress > > #### Test Plan > One Click Binding - https://github.com/appsmithorg/TestSmith/issues/2390 > #### 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 - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Test-plan-implementation#speedbreaker-features-to-consider-for-every-change) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans/_edit#areas-of-interest) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --------- Co-authored-by: Vemparala Surya Vamsi <vamsi@appsmith.com>
2023-06-01 17:26:05 +00:00
this.ChangeColumnType("action", "Button", "v2");
}
fix: table search is not working properly for url colums (#24244) ## Description - If we have a column type of `url` in table, the search considers the computed value and filters data based on that. But the search should take the display text as the search value to filter data. #### PR fixes following issue(s) Fixes #23636 #### Media #### Type of change - Bug fix (non-breaking change which fixes an issue) ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - [x] Jest - [x] 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 - [x] My code follows the style guidelines of this project - [x] 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 - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Test-plan-implementation#speedbreaker-features-to-consider-for-every-change) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans/_edit#areas-of-interest) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
2023-06-21 12:01:06 +00:00
public SortColumn(columnName: string, direction: string) {
this.agHelper.GetNClick(
this._tableColumnHeaderMenuTrigger(columnName),
0,
true,
);
this.agHelper.GetNClickByContains(
this._columnHeaderMenu,
`Sort column ${direction}`,
);
this.agHelper.Sleep(500);
}
public AssertVisibleColumns(columnNames: string[]) {
columnNames.forEach(($header) => {
cy.xpath(this._columnHeader($header))
.invoke("attr", "class")
.then((classes) => {
expect(classes).includes("draggable-header");
});
});
}
//This method is used to navigate forward using ">" button and backward "<"
public NavigateToPageUsingButton_List(
movement: string,
pageNumber: number,
version: "v1" | "v2" = "v2",
) {
this.agHelper.GetNClick(this._listNavigation(movement), 0, true);
this.agHelper.Sleep(2000);
this.agHelper
.GetText(this._listActivePage(version), "text")
.then(($newPageNo) => expect(Number($newPageNo)).to.eq(pageNumber));
}
public NavigateToSpecificPage_List(
pageNumber: number,
version: "v1" | "v2" = "v2",
) {
this.agHelper.GetNClick(`${this._paginationItem(pageNumber)}`);
this.agHelper
.GetText(this._listActivePage(version), "text")
.then(($newPageNo) => expect(Number($newPageNo)).to.eq(pageNumber));
}
}