Skip to content

Commit b2da6cb

Browse files
authored
Merge branch 'main' into feature/O2B-1491/Add-filtering-by-last-status-to-envs-filtering-panel
2 parents b0a027e + bf9d5f4 commit b2da6cb

File tree

6 files changed

+50
-6
lines changed

6 files changed

+50
-6
lines changed

.github/workflows/bookkeeping.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
qc-flags]
3838

3939
steps:
40-
- uses: actions/checkout@v5
40+
- uses: actions/checkout@v6
4141
- name: Set up Docker
4242
uses: docker/setup-buildx-action@v3
4343
- name: Create Coverage Directory
@@ -91,7 +91,7 @@ jobs:
9191
timeout-minutes: 5
9292

9393
steps:
94-
- uses: actions/checkout@v5
94+
- uses: actions/checkout@v6
9595
- name: Setup NodeJS
9696
uses: actions/setup-node@v6
9797
with:

.github/workflows/docker.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
timeout-minutes: 5
1616

1717
steps:
18-
- uses: actions/checkout@v5
18+
- uses: actions/checkout@v6
1919
- name: Lint Dockerfile
2020
uses: brpaz/hadolint-action@master
2121
with:
@@ -26,7 +26,7 @@ jobs:
2626
timeout-minutes: 5
2727

2828
steps:
29-
- uses: actions/checkout@v5
29+
- uses: actions/checkout@v6
3030
- name: Validate docker-compose.yml
3131
run: |
3232
docker compose \

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
outputs:
1414
VERSION: ${{ steps.set-project.outputs.version }}
1515
steps:
16-
- uses: actions/checkout@v5
16+
- uses: actions/checkout@v6
1717
- uses: actions/setup-node@v6
1818
with:
1919
node-version: '22.x'
@@ -43,7 +43,7 @@ jobs:
4343
outputs:
4444
ASSET_URL: ${{ steps.upload.outputs.asset_url }}
4545
steps:
46-
- uses: actions/checkout@v5
46+
- uses: actions/checkout@v6
4747
- uses: actions/setup-node@v6
4848
with:
4949
node-version: '22.x'

lib/public/views/Environments/ActiveColumns/environmentsActiveColumns.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { infoTooltip } from '../../../components/common/popover/infoTooltip.js';
2525
import { aliEcsEnvironmentLinkComponent } from '../../../components/common/externalLinks/aliEcsEnvironmentLinkComponent.js';
2626
import { StatusAcronym } from '../../../domain/enums/statusAcronym.mjs';
2727
import { checkboxes } from '../../../components/Filters/common/filters/checkboxFilter.js';
28+
import { rawTextFilter } from '../../../components/Filters/common/filters/rawTextFilter.js';
2829

2930
/**
3031
* List of active columns for a generic Environments component
@@ -54,6 +55,17 @@ export const environmentsActiveColumns = {
5455
],
5556
'125px',
5657
),
58+
59+
/**
60+
* Environment IDs filter component
61+
*
62+
* @param {EnvironmentOverviewModel} environmentOverviewModel the environment overview model
63+
* @return {Component} the filter component
64+
*/
65+
filter: (environmentOverviewModel) => rawTextFilter(
66+
environmentOverviewModel.filteringModel.get('ids'),
67+
{ classes: ['w-100'], placeholder: 'e.g. CmCvjNbg, TDI59So3d...' },
68+
),
5769
},
5870
runs: {
5971
name: 'Runs',

lib/public/views/Environments/Overview/EnvironmentOverviewModel.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { buildUrl } from '/js/src/index.js';
1515
import { FilteringModel } from '../../../components/Filters/common/FilteringModel.js';
1616
import { OverviewPageModel } from '../../../models/OverviewModel.js';
1717
import { SelectionFilterModel } from '../../../components/Filters/common/filters/SelectionFilterModel.js';
18+
import { RawTextFilterModel } from '../../../components/Filters/common/filters/RawTextFilterModel.js';
1819
import { debounce } from '../../../utilities/debounce.js';
1920
import { coloredEnvironmentStatusComponent } from '../ColoredEnvironmentStatusComponent.js';
2021
import { StatusAcronym } from '../../../domain/enums/statusAcronym.mjs';
@@ -38,6 +39,7 @@ export class EnvironmentOverviewModel extends OverviewPageModel {
3839
rawLabel: status,
3940
})).concat({ value: 'UNKNOWN', label: coloredEnvironmentStatusComponent('UNKNOWN'), rawLabel: 'UNKNOWN' }),
4041
}),
42+
ids: new RawTextFilterModel(),
4143
});
4244

4345
this._filteringModel.observe(() => this._applyFilters(true));

test/public/envs/overview.test.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ const {
2626
getPopoverSelector,
2727
goToPage,
2828
openFilteringPanel,
29+
fillInput,
30+
expectAttributeValue,
31+
resetFilters,
2932
} = require('../defaults.js');
3033
const dateAndTime = require('date-and-time');
3134
const { resetDatabaseContent } = require('../../utilities/resetDatabaseContent.js');
@@ -318,5 +321,32 @@ module.exports = () => {
318321
await page.$eval(getCurrentStatusCheckboxSelector("DEPLOYED"), (element) => element.click());
319322
await waitForTableLength(page, 3);
320323
await checkTableCurrentStatuses(["RUNNING", "DEPLOYED"]);
324+
};
325+
326+
it('should successfully filter environments by their IDs', async () => {
327+
/**
328+
* This is the sequence to test filtering the environments on IDs.
329+
*
330+
* @param {string} selector the filter input selector
331+
* @param {string} inputValue the value to type in the filter input
332+
* @param {string[]} expectedIds the list of expected environment IDs after filtering
333+
* @return {void}
334+
*/
335+
const filterOnID = async (selector, inputValue, expectedIds) => {
336+
await fillInput(page, selector, inputValue, ['change']);
337+
await waitForTableLength(page, expectedIds.length);
338+
expect(await page.$$eval('tbody tr', (rows) => rows.map((row) => row.id))).to.eql(expectedIds.map(id => `row${id}`));
339+
};
340+
341+
await expectAttributeValue(page, '.id-filter input', 'placeholder', 'e.g. CmCvjNbg, TDI59So3d...');
342+
343+
await filterOnID('.id-filter input', 'CmCvjNbg', ['CmCvjNbg']);
344+
await resetFilters(page);
345+
346+
await filterOnID('.id-filter input', 'CmCvjNbg, TDI59So3d', ['CmCvjNbg', 'TDI59So3d']);
347+
await resetFilters(page);
348+
349+
await filterOnID('.id-filter input', 'j', ['CmCvjNbg', 'GIDO1jdkD', '8E4aZTjY', 'Dxi029djX']);
350+
await resetFilters(page);
321351
});
322352
};

0 commit comments

Comments
 (0)