From 7fa9a3fd39cbc5ecc4db8da50317c3927e302271 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Tue, 25 Jan 2022 12:01:29 +0530 Subject: [PATCH 1/4] feat(minor): Add "in list view" fields in sort selector --- frappe/public/js/frappe/ui/sort_selector.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/frappe/public/js/frappe/ui/sort_selector.js b/frappe/public/js/frappe/ui/sort_selector.js index 544467fb14..470f48e0cf 100644 --- a/frappe/public/js/frappe/ui/sort_selector.js +++ b/frappe/public/js/frappe/ui/sort_selector.js @@ -121,9 +121,13 @@ frappe.ui.SortSelector = class SortSelector { _options.push({'fieldname': meta.title_field}); } - // bold or mandatory + // add bold, mandatory and fields that are available in list view meta.fields.forEach(function(df) { - if(df.mandatory || df.bold) { + if ( + (df.mandatory || df.bold || df.in_list_view) + && frappe.model.is_value_type(df.fieldtype) + && frappe.perm.has_perm(me.doctype, df.permlevel, "read") + ) { _options.push({fieldname: df.fieldname, label: df.label}); } }); From 5742217e8e680e52edc456f59870443398222e74 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Tue, 25 Jan 2022 12:13:02 +0530 Subject: [PATCH 2/4] refactor(minor): SortSelector.setup_from_doctype --- frappe/public/js/frappe/ui/sort_selector.js | 40 ++++++++++----------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/frappe/public/js/frappe/ui/sort_selector.js b/frappe/public/js/frappe/ui/sort_selector.js index 470f48e0cf..879466e8f7 100644 --- a/frappe/public/js/frappe/ui/sort_selector.js +++ b/frappe/public/js/frappe/ui/sort_selector.js @@ -113,15 +113,23 @@ frappe.ui.SortSelector = class SortSelector { if(!this.args.options) { // default options var _options = [ - {'fieldname': 'modified'} + {'fieldname': 'modified'}, + {'fieldname': 'name'}, + {'fieldname': 'creation'}, + {'fieldname': 'idx'}, ] // title field - if(meta.title_field) { - _options.push({'fieldname': meta.title_field}); + if (meta.title_field) { + _options.splice(1, 0, {'fieldname': meta.title_field}); + } + + // sort field - set via DocType schema or Customize Form + if (meta_sort_field) { + _options.splice(1, 0, { 'fieldname': meta_sort_field }); } - // add bold, mandatory and fields that are available in list view + // bold, mandatory and fields that are available in list view meta.fields.forEach(function(df) { if ( (df.mandatory || df.bold || df.in_list_view) @@ -132,27 +140,17 @@ frappe.ui.SortSelector = class SortSelector { } }); - // meta sort field - if(meta_sort_field) _options.push({ 'fieldname': meta_sort_field }); - - // more default options - _options.push( - {'fieldname': 'name'}, - {'fieldname': 'creation'}, - {'fieldname': 'idx'} - ) + // add missing labels + _options.forEach(option => { + if (!option.label) { + option.label = me.get_label(option.fieldname); + } + }); // de-duplicate - this.args.options = _options.uniqBy(function(obj) { + this.args.options = _options.uniqBy(obj => { return obj.fieldname; }); - - // add missing labels - this.args.options.forEach(function(o) { - if(!o.label) { - o.label = me.get_label(o.fieldname); - } - }); } // set default From 72352133c536e00958a4419322c62207953dda9e Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Tue, 25 Jan 2022 12:45:56 +0530 Subject: [PATCH 3/4] test: fixed failing multi select dialog test --- cypress/integration/multi_select_dialog.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cypress/integration/multi_select_dialog.js b/cypress/integration/multi_select_dialog.js index 7752ad0f0b..607db506c7 100644 --- a/cypress/integration/multi_select_dialog.js +++ b/cypress/integration/multi_select_dialog.js @@ -77,11 +77,11 @@ context('MultiSelectDialog', () => { it('tests more button', () => { cy.get_open_dialog() - .get(`.frappe-control[data-fieldname="more_btn"]`) + .get(`.frappe-control[data-fieldname="more_child_btn"]`) .should('exist') .as('more-btn'); - cy.get_open_dialog().get('.list-item-container').should(($rows) => { + cy.get_open_dialog().get('.datatable .dt-scrollable .dt-row').should(($rows) => { expect($rows).to.have.length(20); }); @@ -89,7 +89,7 @@ context('MultiSelectDialog', () => { cy.get('@more-btn').find('button').click({force: true}); cy.wait('@get-more-records'); - cy.get_open_dialog().get('.list-item-container').should(($rows) => { + cy.get_open_dialog().get('.datatable .dt-scrollable .dt-row').should(($rows) => { if ($rows.length <= 20) { throw new Error("More button doesn't work"); } From da5779dc439c4dfc8445358ea7c84506128c9dfa Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Tue, 25 Jan 2022 13:46:18 +0530 Subject: [PATCH 4/4] ci: Run cypress tests on each re-run - using $GITHUB_RUN_ID-$GITHUB_RUN_ATTEMPT to keep each re-run unique - Previously, cypress used to just return "Run finished" (without actually re-running the test) after re-running the GA build (without updating the code). This used to give false impression that all tests are passed. --- .github/workflows/ui-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ui-tests.yml b/.github/workflows/ui-tests.yml index cb502f68a7..3eefd1ce82 100644 --- a/.github/workflows/ui-tests.yml +++ b/.github/workflows/ui-tests.yml @@ -137,7 +137,7 @@ jobs: - name: UI Tests if: ${{ steps.check-build.outputs.build == 'strawberry' }} - run: cd ~/frappe-bench/ && bench --site test_site run-ui-tests frappe --with-coverage --headless --parallel --ci-build-id $GITHUB_RUN_ID + run: cd ~/frappe-bench/ && bench --site test_site run-ui-tests frappe --with-coverage --headless --parallel --ci-build-id $GITHUB_RUN_ID-$GITHUB_RUN_ATTEMPT env: CYPRESS_RECORD_KEY: 4a48f41c-11b3-425b-aa88-c58048fa69eb