diff --git a/frontend/cypress/config/repo-config.csv b/frontend/cypress/config/repo-config.csv index 5edbcc27b6..2766cf6f7d 100644 --- a/frontend/cypress/config/repo-config.csv +++ b/frontend/cypress/config/repo-config.csv @@ -1,3 +1,7 @@ Repository's Location,Branch,File formats,Ignore Glob List,Ignore standalone config,Ignore Commits List,Ignore Authors List,Shallow Cloning,Find Previous Authors https://github.com/reposense/RepoSense.git,cypress,,,,,,, https://github.com/reposense/testrepo-Empty.git,master,,,,,,, +https://github.com/reposense/testrepo-Empty2.git,master,,,,,,, +https://github.com/reposense/testrepo-Empty3.git,master,,,,,,, +https://github.com/reposense/testrepo-Empty4.git,master,,,,,,, +https://github.com/reposense/testrepo-Empty5.git,master,,,,,,, diff --git a/frontend/cypress/tests/chartView/chartView_errorSummary_messageBox.cy.js b/frontend/cypress/tests/chartView/chartView_errorSummary_messageBox.cy.js index e961fc72fc..3d97ba254f 100644 --- a/frontend/cypress/tests/chartView/chartView_errorSummary_messageBox.cy.js +++ b/frontend/cypress/tests/chartView/chartView_errorSummary_messageBox.cy.js @@ -27,4 +27,24 @@ describe('error summary', () => { cy.get('.error-message-box') .should('not.be.visible'); }); + + it('can be expanded and collapsed if count > 4', () => { + cy.get('.error-message-box') + .find('.error-message-box__failed-repo') + .should('have.length', 4); + + cy.get('.error-message-box__show-more-container > a') + .click(); + + cy.get('.error-message-box') + .find('.error-message-box__failed-repo') + .should('have.length', 5); + + cy.get('.error-message-box__show-more-container > a') + .click(); + + cy.get('.error-message-box') + .find('.error-message-box__failed-repo') + .should('have.length', 4); + }); }); diff --git a/frontend/cypress/tests/chartView/chartView_zoomFeature.cy.js b/frontend/cypress/tests/chartView/chartView_zoomFeature.cy.js index 4bb5e03a0b..e3abafacb2 100644 --- a/frontend/cypress/tests/chartView/chartView_zoomFeature.cy.js +++ b/frontend/cypress/tests/chartView/chartView_zoomFeature.cy.js @@ -8,7 +8,7 @@ describe('zoom features in code view', () => { const zoomKey = Cypress.platform === 'darwin' ? '{meta}' : '{ctrl}'; it('click on view commits button', () => { cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -57,7 +57,7 @@ describe('date changes in chart view should reflect in zoom', () => { .type('2018-06-11'); cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -84,7 +84,7 @@ describe('date changes in chart view should reflect in zoom', () => { .type('2018-05-20'); cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -112,7 +112,7 @@ describe('date changes in chart view should reflect in zoom', () => { .type('2019-08-19'); cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -140,7 +140,7 @@ describe('date changes in chart view should reflect in zoom', () => { .type('2018-07-20'); cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -171,7 +171,7 @@ describe('date changes in chart view should reflect in zoom', () => { .type('2019-03-09'); cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -212,7 +212,7 @@ describe('date changes in chart view should reflect in zoom', () => { .type('2019-08-01'); cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/codeView/codeView.cy.js b/frontend/cypress/tests/codeView/codeView.cy.js index 2398935767..777e93e8ec 100644 --- a/frontend/cypress/tests/codeView/codeView.cy.js +++ b/frontend/cypress/tests/codeView/codeView.cy.js @@ -34,7 +34,7 @@ describe('code view', () => { .should('be.checked'); cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/codeView/codeView_checkFileTypes.cy.js b/frontend/cypress/tests/codeView/codeView_checkFileTypes.cy.js index 78a5d77cb4..f72dbcf960 100644 --- a/frontend/cypress/tests/codeView/codeView_checkFileTypes.cy.js +++ b/frontend/cypress/tests/codeView/codeView_checkFileTypes.cy.js @@ -2,7 +2,7 @@ describe('check file types', () => { it('check if all files types are visible by default', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -16,7 +16,7 @@ describe('check file types', () => { it('uncheck all files types should show no files', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -34,7 +34,7 @@ describe('check file types', () => { it('uncheck file type should uncheck all option and not show legend', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/codeView/codeView_filterGlob.cy.js b/frontend/cypress/tests/codeView/codeView_filterGlob.cy.js index 2b36ca439f..b975f893ad 100644 --- a/frontend/cypress/tests/codeView/codeView_filterGlob.cy.js +++ b/frontend/cypress/tests/codeView/codeView_filterGlob.cy.js @@ -2,7 +2,7 @@ describe('filter glob', () => { it('check filter glob radio button is clickable', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -18,7 +18,7 @@ describe('filter glob', () => { it('check no filter glob input should show all file types by default', () => { cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -33,7 +33,7 @@ describe('filter glob', () => { it('check filter glob input should be in focus after click', () => { cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -49,7 +49,7 @@ describe('filter glob', () => { it('check filter glob input should have default empty value', () => { cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -63,7 +63,7 @@ describe('filter glob', () => { it('check deleting previously searched input to filter empty input by enter should show all file types', () => { cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -93,7 +93,7 @@ describe('filter glob', () => { it('check deleting previously searched input to filter empty input by clicking should show all file types', () => { cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -120,7 +120,7 @@ describe('filter glob', () => { it('check request to filter invalid glob by enter should not show any files', () => { cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -144,7 +144,7 @@ describe('filter glob', () => { it('check request to filter invalid glob by clicking should not show any files', () => { cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -167,7 +167,7 @@ describe('filter glob', () => { it('check filter glob should only show files with that extension', () => { cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/codeView/codeView_hideFileDetails.cy.js b/frontend/cypress/tests/codeView/codeView_hideFileDetails.cy.js index c515a997c0..9353f5a36d 100644 --- a/frontend/cypress/tests/codeView/codeView_hideFileDetails.cy.js +++ b/frontend/cypress/tests/codeView/codeView_hideFileDetails.cy.js @@ -2,7 +2,7 @@ describe('hide all file details', () => { it('check hide all file details hides the content of all the files', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -28,7 +28,7 @@ describe('hide all file details', () => { it('check details of one file are shown, rest are hidden', () => { cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -68,7 +68,7 @@ describe('hide all file details', () => { it('check file can be hidden after scrolling', () => { cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -119,7 +119,7 @@ describe('hide all file details', () => { it('check show all file details shows the content of all the files', () => { cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -148,7 +148,7 @@ describe('hide all file details', () => { it('check collapsed file persists after sort', () => { cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/codeView/codeView_mergeGroupBlame.cy.js b/frontend/cypress/tests/codeView/codeView_mergeGroupBlame.cy.js index 1a911245d6..4c2bdbfedd 100644 --- a/frontend/cypress/tests/codeView/codeView_mergeGroupBlame.cy.js +++ b/frontend/cypress/tests/codeView/codeView_mergeGroupBlame.cy.js @@ -2,7 +2,7 @@ describe('merge group blame in code view', () => { it('no author breakdown shown by default', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -28,7 +28,7 @@ describe('merge group blame in code view', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -54,7 +54,7 @@ describe('merge group blame in code view', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -81,7 +81,7 @@ describe('merge group blame in code view', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -109,7 +109,7 @@ describe('merge group blame in code view', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -137,7 +137,7 @@ describe('merge group blame in code view', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -162,7 +162,7 @@ describe('merge group blame in code view', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -186,7 +186,7 @@ describe('merge group blame in code view', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -219,7 +219,7 @@ describe('merge group blame in code view', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/codeView/codeView_reload.cy.js b/frontend/cypress/tests/codeView/codeView_reload.cy.js index 6bda124e8c..8076d3e3d7 100644 --- a/frontend/cypress/tests/codeView/codeView_reload.cy.js +++ b/frontend/cypress/tests/codeView/codeView_reload.cy.js @@ -2,7 +2,7 @@ describe('reload page', () => { it('reload page should restore all controls', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/codeView/codeView_renderFilterHash.cy.js b/frontend/cypress/tests/codeView/codeView_renderFilterHash.cy.js index ec2c91e869..c42998b856 100644 --- a/frontend/cypress/tests/codeView/codeView_renderFilterHash.cy.js +++ b/frontend/cypress/tests/codeView/codeView_renderFilterHash.cy.js @@ -371,7 +371,7 @@ describe('render filter hash', () => { it('code panel: sort by: url params should persist after change and reload', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -416,7 +416,7 @@ describe('render filter hash', () => { it('code panel: order: url params should persist after change and reload', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -462,7 +462,7 @@ describe('render filter hash', () => { it('code panel: filter by glob: url params should persist after change and reload', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/codeView/codeView_switchAuthorship.cy.js b/frontend/cypress/tests/codeView/codeView_switchAuthorship.cy.js index c4bf724d09..d9667eee02 100644 --- a/frontend/cypress/tests/codeView/codeView_switchAuthorship.cy.js +++ b/frontend/cypress/tests/codeView/codeView_switchAuthorship.cy.js @@ -2,7 +2,7 @@ describe('switch authorship', () => { it('switch authorship view should restore all default controls', () => { // open the code panel cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .first() .click(); @@ -23,7 +23,7 @@ describe('switch authorship', () => { // switch authorship view cy.get('.icon-button.fa-code') - .should('be.visible') + .should('exist') .last() .click(); @@ -63,7 +63,7 @@ describe('switch authorship', () => { // open the first code panel cy.get('#summary-charts > .summary-charts') - .should('be.visible') + .should('exist') .first() .find('.fa-code') .first() diff --git a/frontend/cypress/tests/zoomView/zoomView_diffstat.cy.js b/frontend/cypress/tests/zoomView/zoomView_diffstat.cy.js index a9fba561cd..b9d4bcd48f 100644 --- a/frontend/cypress/tests/zoomView/zoomView_diffstat.cy.js +++ b/frontend/cypress/tests/zoomView/zoomView_diffstat.cy.js @@ -1,7 +1,7 @@ describe('diffstat', () => { it('should render container for contribution bars', () => { cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -13,7 +13,7 @@ describe('diffstat', () => { // `README: Fix grammatical error` with 1 insertion and 1 deletion. it('should render non-empty contribution bars for commits with changes', () => { cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -35,7 +35,7 @@ describe('diffstat', () => { // `Merge branch 'new-branch` into cypress` with 0 insertions and 0 deletions. it('should render empty contribution bars for commits with no changes', () => { cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -55,7 +55,7 @@ describe('diffstat', () => { it('should render contribution bars in proportion', () => { cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/zoomView/zoomView_hideCommitMessages.cy.js b/frontend/cypress/tests/zoomView/zoomView_hideCommitMessages.cy.js index 116be8884f..907d5cd38d 100644 --- a/frontend/cypress/tests/zoomView/zoomView_hideCommitMessages.cy.js +++ b/frontend/cypress/tests/zoomView/zoomView_hideCommitMessages.cy.js @@ -2,7 +2,7 @@ describe('hide all commit messages ', () => { it('check hide all commit messages hides the commit messages', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -29,7 +29,7 @@ describe('hide all commit messages ', () => { it('check show all commit messages show the commit messages', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -57,7 +57,7 @@ describe('hide all commit messages ', () => { it('should only display hide all commit messages when none are hidden', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -76,7 +76,7 @@ describe('hide all commit messages ', () => { it('should only display show all commit messages when all are hidden', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -99,7 +99,7 @@ describe('hide all commit messages ', () => { it('should display both show and hide all commit messages when some are hidden', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -130,7 +130,7 @@ describe('hide all commit messages ', () => { // Assumptions: the fifth commit (19e3294) of the first author of the first repo // contains changes in only .java files. cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -191,7 +191,7 @@ describe('hide all commit messages ', () => { it('check hidden commit message persists after sort', () => { cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/zoomView/zoomView_mergeCommits.cy.js b/frontend/cypress/tests/zoomView/zoomView_mergeCommits.cy.js index 1395c056a7..7847b44f5c 100644 --- a/frontend/cypress/tests/zoomView/zoomView_mergeCommits.cy.js +++ b/frontend/cypress/tests/zoomView/zoomView_mergeCommits.cy.js @@ -2,7 +2,7 @@ describe('include merge commits in zoom view', () => { it('show merge commits when all file types selected', () => { // open the commits panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -14,7 +14,7 @@ describe('include merge commits in zoom view', () => { it('hide merge commits when some file types unselected', () => { // open the commits panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/zoomView/zoomView_rampChart.js b/frontend/cypress/tests/zoomView/zoomView_rampChart.cy.js similarity index 97% rename from frontend/cypress/tests/zoomView/zoomView_rampChart.js rename to frontend/cypress/tests/zoomView/zoomView_rampChart.cy.js index 82d29bcbba..edd50611d6 100644 --- a/frontend/cypress/tests/zoomView/zoomView_rampChart.js +++ b/frontend/cypress/tests/zoomView/zoomView_rampChart.cy.js @@ -4,7 +4,7 @@ describe('show ramp chart for period', () => { it('show ramp chart for all commits by default', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -33,7 +33,7 @@ describe('show ramp chart for period', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -90,7 +90,7 @@ describe('show ramp chart for period', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -116,7 +116,7 @@ describe('show ramp chart for period', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -144,7 +144,7 @@ describe('show ramp chart for period', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .eq(1) .click(); @@ -165,7 +165,7 @@ describe('show ramp chart for period', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -192,7 +192,7 @@ describe('show ramp chart for period', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -236,7 +236,7 @@ describe('show ramp chart for period', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -280,7 +280,7 @@ describe('show ramp chart for period', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/zoomView/zoomView_reload.cy.js b/frontend/cypress/tests/zoomView/zoomView_reload.cy.js index 2b71d22d7c..a1173bd772 100644 --- a/frontend/cypress/tests/zoomView/zoomView_reload.cy.js +++ b/frontend/cypress/tests/zoomView/zoomView_reload.cy.js @@ -2,7 +2,7 @@ describe('reload page', () => { it('reload page should restore all controls', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/zoomView/zoomView_selectFileTypes.cy.js b/frontend/cypress/tests/zoomView/zoomView_selectFileTypes.cy.js index 3a836cd90e..faff44df60 100644 --- a/frontend/cypress/tests/zoomView/zoomView_selectFileTypes.cy.js +++ b/frontend/cypress/tests/zoomView/zoomView_selectFileTypes.cy.js @@ -1,7 +1,7 @@ describe('check file types ', () => { it('check if all file types are visible by default', () => { cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -14,7 +14,7 @@ describe('check file types ', () => { it('uncheck all file types should show no files', () => { cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -32,7 +32,7 @@ describe('check file types ', () => { // Assumptions: the first author of the first repo // committed .java, .js and .gradle files. cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -52,7 +52,7 @@ describe('check file types ', () => { // Assumptions: the third commit (19e3294) of the first author of the first repo // contains changes in only .java files. cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -77,7 +77,7 @@ describe('check file types ', () => { // Assumptions: the eighth commit (5ab0322) of the first author of the first repo // contains changes in both .java and .md files. cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); diff --git a/frontend/cypress/tests/zoomView/zoomView_switchZoom.cy.js b/frontend/cypress/tests/zoomView/zoomView_switchZoom.cy.js index 00127f933b..2ffa7eb383 100644 --- a/frontend/cypress/tests/zoomView/zoomView_switchZoom.cy.js +++ b/frontend/cypress/tests/zoomView/zoomView_switchZoom.cy.js @@ -2,7 +2,7 @@ describe('switch zoom', () => { it('switch zoom view should restore all default controls', () => { // open the commit panel cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .first() .click(); @@ -23,7 +23,7 @@ describe('switch zoom', () => { // switch zoom view cy.get('.icon-button.fa-list-ul') - .should('be.visible') + .should('exist') .last() .click(); @@ -65,7 +65,7 @@ describe('switch zoom', () => { // open the commit panel cy.get('#summary-charts > .summary-charts') - .should('be.visible') + .should('exist') .first() .find('.fa-list-ul') .first() diff --git a/frontend/src/views/c-summary.vue b/frontend/src/views/c-summary.vue index 1d8887f45e..68751dfd92 100644 --- a/frontend/src/views/c-summary.vue +++ b/frontend/src/views/c-summary.vue @@ -76,7 +76,11 @@ .error-message-box(v-if="Object.entries(errorMessages).length && !isWidgetMode") .error-message-box__close-button(v-on:click="dismissTab($event)") × .error-message-box__message The following issues occurred when analyzing the following repositories: - .error-message-box__failed-repo(v-for="errorBlock in errorMessages") + .error-message-box__failed-repo( + v-for="errorBlock in errorIsShowingMore\ + ? errorMessages\ + : Object.values(errorMessages).slice(0, numberOfErrorMessagesToShow)" + ) font-awesome-icon(icon="exclamation") span.error-message-box__failed-repo--name {{ errorBlock.repoName }} .error-message-box__failed-repo--reason( @@ -92,7 +96,11 @@ v-bind:href="getReportIssueEmailLink(errorBlock.errorMessage)" ) span {{ getReportIssueEmailAddress() }} - .error-message-box__failed-repo--reason(v-else) {{ errorBlock.errorMessage }} + .error-message-box__failed-repo--reason(v-else) {{ errorBlock.errorMessage }}\ + .error-message-box__show-more-container(v-if="Object.keys(errorMessages).length > numberOfErrorMessagesToShow") + span(v-if="!errorIsShowingMore") Remaining error messages omitted to save space.  + a(v-if="!errorIsShowingMore", v-on:click="toggleErrorShowMore()") SHOW ALL... + a(v-else, v-on:click="toggleErrorShowMore()") SHOW LESS... .fileTypes(v-if="filterBreakdown && !isWidgetMode") .checkboxes.mui-form--inline(v-if="Object.keys(fileTypeColors).length > 0") label(style='background-color: #000000; color: #ffffff') @@ -201,6 +209,8 @@ export default defineComponent({ filterGroupSelectionWatcherFlag: false, chartGroupIndex: undefined as number | undefined, chartIndex: undefined as number | undefined, + errorIsShowingMore: false, + numberOfErrorMessagesToShow: 4, }; }, computed: { @@ -933,6 +943,10 @@ export default defineComponent({ getFontColor(color: string) { return window.getFontColor(color); }, + + toggleErrorShowMore() { + this.errorIsShowingMore = !this.errorIsShowingMore; + }, }, }); @@ -941,4 +955,10 @@ export default defineComponent({