Add multi-tag filtering to planning dashboard with optimized test suite#1315
Merged
renemadsen merged 11 commits intomasterfrom Feb 5, 2026
Merged
Add multi-tag filtering to planning dashboard with optimized test suite#1315renemadsen merged 11 commits intomasterfrom
renemadsen merged 11 commits intomasterfrom
Conversation
- Updated TimePlanningsRequestModel to include tagIds - Added tag dropdown UI component with multi-select - Implemented backend filtering by tags (AND logic) - Created Cypress e2e tests in folder 'n' Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
- Added System.Collections.Generic using statement - Updated component spec to include getAvailableTags mock - Added unit tests for tag filtering functionality Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
- Use take(1) operator to prevent memory leak in getAvailableTags subscription - Remove unused variables in Cypress test file Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
- Remove unnecessary subscription variable for getAvailableTags - Add proper type annotation (number[]) to onTagsChanged - Use BASE_URL constant in Cypress tests instead of hardcoded values Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add tag dropdown to filters in planning module
Add tag filtering to planning dashboard
Feb 5, 2026
- Updated dotnet-core-master.yml to include 'n' in test matrix - Updated dotnet-core-pr.yml to include 'n' in test matrix - Ensures new tag filtering e2e tests will run in CI Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
Copilot
AI
changed the title
Add tag filtering to planning dashboard
Add folder 'n' to GitHub Actions test matrix
Feb 5, 2026
- Added SQL database files (420_SDK.sql and 420_eform-angular-time-planning-plugin.sql) - Added activate-plugin.spec.cy.ts - Added assert-true.spec.cy.ts - Rewrote tag-filtering.spec.cy.ts to follow exact pattern from 'm' folder for tag creation - Tag creation now uses the same mat-icon discovery and input field detection as 'm' folder - Creates 5 tags using the proven pattern that works in 'm' folder Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
Copilot
AI
changed the title
Add folder 'n' to GitHub Actions test matrix
Fix Cypress test structure in folder 'n' to match working pattern from folder 'm'
Feb 5, 2026
renemadsen
requested changes
Feb 5, 2026
| it('should assign tags to sites', () => { | ||
| cy.task('log', '[Tag Filter Tests] Assigning tags to sites...'); | ||
| // TODO: Implement tag assignment to sites | ||
| // This would follow a similar pattern to the 'm' folder test |
Member
There was a problem hiding this comment.
@copilot implement this step.
- navigate to the advanced/sites
1.1 click the action menu for 1. site in list
1.2 click the edit button
1.3 enter 2 tags into the tag field with id "tagSelector" and selct the tags
1.4 intercept put to api/sites
1.5 click the "save" button with id "siteEditSaveBtn"
1.5 wait for put call to finish
1.6 wait for spinner to disapear, look at existing patteren in m test folder - repeat for 5 sites with different tag combination for usage in further tests
Contributor
Author
There was a problem hiding this comment.
Implemented in commit f6ff1b4.
The test now:
- Navigates to /advanced/sites for each of 5 sites
- Clicks action menu and edit button (#editSiteBtn)
- Selects tags using #tagSelector field
- Intercepts PUT to api/sites
- Clicks save button (#siteEditSaveBtn)
- Waits for API call completion and spinner to disappear
Tag combinations assigned:
- Site 1: Tag-A + Tag-B
- Site 2: Tag-A + Tag-C
- Site 3: Tag-A + Tag-D
- Site 4: Tag-A + Tag-E
- Site 5: Tag-A + Tag-B + Tag-C (for testing multi-tag AND filtering)
Following the user's instructions: - Navigate to /advanced/sites for each site - Click action menu for site in list - Click edit button (#editSiteBtn) - Select tags using #tagSelector field - Intercept PUT to api/sites - Click save button (#siteEditSaveBtn) - Wait for API call and spinner to disappear Assigns specific tag combinations to 5 sites: - Site 1: Tag-A, Tag-B - Site 2: Tag-A, Tag-C - Site 3: Tag-A, Tag-D - Site 4: Tag-A, Tag-E - Site 5: Tag-A, Tag-B, Tag-C (for multi-tag filter testing) Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
renemadsen
requested changes
Feb 5, 2026
| combination.tags.forEach((tagName, tagIdx) => { | ||
| cy.task('log', `[Tag Filter Tests] Selecting tag: ${tagName}`); | ||
| cy.get('.ng-option').contains(tagName).click(); | ||
| cy.wait(200); |
Member
There was a problem hiding this comment.
@copilot if there needs to be selected more than the first tag, then this needs to executed again, for the .ng-options to be visible:
cy.get('#tagSelector').scrollIntoView().should('be.visible').click();
Contributor
Author
There was a problem hiding this comment.
Fixed in commit 7cbe75a. Moved the #tagSelector click inside the forEach loop so the dropdown is reopened before selecting each tag, ensuring .ng-option elements remain visible for multi-tag selection.
Moved the dropdown click inside the forEach loop so that for each tag selection, the dropdown is reopened to make .ng-option elements visible. This ensures multiple tags can be selected properly when assigning more than one tag to a site. Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
Added viewportWidth: 2560 and viewportHeight: 1440 to cypress.config.ts to prevent tests from failing due to small Chrome view size. Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
Copilot
AI
changed the title
Fix Cypress test structure in folder 'n' to match working pattern from folder 'm'
Update Cypress viewport to 2560x1440 for test stability
Feb 5, 2026
Added test.runsettings file with parallel test configuration: - MaxCpuCount=0 (use all available processors) - NumberOfTestWorkers=-1 (automatic worker count based on CPU cores) Updated both workflow files (dotnet-core-master.yml and dotnet-core-pr.yml) to use the runsettings file via --settings parameter. This will significantly speed up C# test execution by running tests in parallel. Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
Copilot
AI
changed the title
Update Cypress viewport to 2560x1440 for test stability
Add multi-tag filtering to planning dashboard with optimized test suite
Feb 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements tag-based filtering for the time planning dashboard, allowing users to filter assigned sites by selecting one or more tags. Multiple tag selection uses AND logic.
Frontend Changes
mtx-selectdropdown with[multiple]="true"to planning container componentgetAvailableTags()service methodtagIdsarray inTimePlanningsRequestModelnumber[]for tag IDsBackend Changes
TimePlanningPlanningRequestModelwithList<int> TagIdspropertyAssignedSiteManagingTagswith GroupBy to enforce AND semantics:Test Suite
Cypress E2E (folder 'n')
Test Optimizations
test.runsettings:MaxCpuCount=0(use all cores)NumberOfTestWorkers=-1(auto-scale workers)--settingsparameterTechnical Notes
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.