Skip to content

Commit 910ae6b

Browse files
authored
fix(tinder mode): filter images by selected browser (#379)
1 parent bf80777 commit 910ae6b

File tree

2 files changed

+56
-11
lines changed
  • lib/static/modules/selectors
  • test/unit/lib/static/modules/selectors

2 files changed

+56
-11
lines changed

lib/static/modules/selectors/tree.js

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const getRootSuiteIds = (state) => {
1616
const viewMode = getViewMode(state);
1717
return viewMode === viewModes.FAILED ? state.tree.suites.failedRootIds : state.tree.suites.allRootIds;
1818
};
19-
const getImageIds = (state) => state.tree.images.allIds;
19+
const getBrowserIds = (state) => state.tree.browsers.allIds;
2020

2121
const getSuiteById = (state, {suiteId}) => state.tree.suites.byId[suiteId];
2222
const getBrowserById = (state, {browserId}) => state.tree.browsers.byId[browserId];
@@ -54,11 +54,10 @@ export const mkGetLastImageByStateName = () => createSelector(
5454
);
5555

5656
export const getAcceptableImagesByStateName = createSelector(
57-
getImageIds, getBrowsers, getResults, getImages,
58-
(imageIds, browsers, results, images) => {
57+
getBrowserIds, getBrowsers, getResults, getImages, getFilteredBrowsers,
58+
(browserIds, browsers, results, images, filteredBrowsers) => {
5959
const getImageInfo = (image) => {
60-
const result = results[image.parentId];
61-
const browser = browsers[result.parentId];
60+
const browser = getImageBrowser(image, browsers, results);
6261

6362
return {suiteId: browser.parentId, browserName: browser.name};
6463
};
@@ -74,8 +73,11 @@ export const getAcceptableImagesByStateName = createSelector(
7473
: compareSuiteIdsRes;
7574
};
7675

77-
const preparedImages = imageIds
78-
.map((imgId) => images[imgId])
76+
const matchedBrowsers = browserIds
77+
.map((browserId) => browsers[browserId])
78+
.filter((browser) => shouldShowBrowser(browser, filteredBrowsers));
79+
80+
const preparedImages = flatMap(matchedBrowsers, (browser) => getBrowserImages(browser, {results, images}))
7981
.filter(isAcceptable)
8082
.sort(sortImages);
8183

@@ -206,6 +208,18 @@ function getSuiteBrowsers(suite, tree) {
206208
return flatMap(suite.suiteIds, (suiteId) => getSuiteBrowsers(suites[suiteId], tree));
207209
}
208210

211+
function getBrowserImages(node, tree) {
212+
const {results, images} = tree;
213+
214+
if (node.imageIds) {
215+
return [].concat(node.imageIds).map((imageId) => images[imageId]);
216+
}
217+
218+
return flatMap(node.resultIds, (resultId) => {
219+
return getBrowserImages(results[resultId], tree);
220+
});
221+
}
222+
209223
function isStatusMatchViewMode(status, viewMode) {
210224
if (viewMode === viewModes.ALL) {
211225
return true;
@@ -268,15 +282,19 @@ function getFailedTestSuites(suite, suites) {
268282
}
269283

270284
function getLastImageByStateName(image, browsers, results, images) {
271-
const result = results[image.parentId];
272-
const browser = browsers[result.parentId];
285+
const browser = getImageBrowser(image, browsers, results);
273286
const allBrowserImages = flatMap(browser.resultIds, (resultId) => {
274287
return results[resultId].imageIds.map((imgId) => images[imgId]);
275288
});
276289

277290
return findLast(allBrowserImages, {stateName: image.stateName});
278291
}
279292

293+
function getImageBrowser(image, browsers, results) {
294+
const result = results[image.parentId];
295+
return browsers[result.parentId];
296+
}
297+
280298
export const areAllRootSuitesIdle = createSelector(
281299
getAllRootSuiteIds, getSuites,
282300
(allRootSuiteIds, suites) => {

test/unit/lib/static/modules/selectors/tree.js

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ describe('tree selectors', () => {
6767

6868
it('should return images sorted by browser id', () => {
6969
const browsersById = {
70-
...mkBrowser({id: 'b2', parentId: 'suite', resultIds: ['r2']}),
71-
...mkBrowser({id: 'b1', parentId: 'suite', resultIds: ['r1']})
70+
...mkBrowser({id: 'b2', name: 'bro2', parentId: 'suite', resultIds: ['r2']}),
71+
...mkBrowser({id: 'b1', name: 'bro1', parentId: 'suite', resultIds: ['r1']})
7272
};
7373
const resultsById = {
7474
...mkResult({id: 'r1', parentId: 'b1', imageIds: ['img1']}),
@@ -85,6 +85,33 @@ describe('tree selectors', () => {
8585
const imagesByStateName = getAcceptableImagesByStateName(state);
8686
assert.deepEqual(Object.keys(imagesByStateName), ['b1 first', 'b2 second']);
8787
});
88+
89+
it('should return images from browser which matched to the passed filter', () => {
90+
const browsersById = {
91+
...mkBrowser({id: 'b1', name: 'bro1', version: '1', parentId: 'suiteB', resultIds: ['r1']}),
92+
...mkBrowser({id: 'b2', name: 'bro1', version: '2', parentId: 'suiteB', resultIds: ['r2']}),
93+
...mkBrowser({id: 'b3', name: 'bro2', version: '1', parentId: 'suiteA', resultIds: ['r3']})
94+
};
95+
const resultsById = {
96+
...mkResult({id: 'r1', parentId: 'b1', imageIds: ['img1']}),
97+
...mkResult({id: 'r2', parentId: 'b2', imageIds: ['img2']}),
98+
...mkResult({id: 'r3', parentId: 'b3', imageIds: ['img3']})
99+
};
100+
const imagesById = {
101+
...mkImage({id: 'img1', parentId: 'r1', stateName: 'first', status: FAIL}),
102+
...mkImage({id: 'img2', parentId: 'r2', stateName: 'second', status: FAIL}),
103+
...mkImage({id: 'img3', parentId: 'r3', stateName: 'third', status: FAIL})
104+
};
105+
106+
const tree = mkStateTree({browsersById, resultsById, imagesById});
107+
const view = mkStateView({filteredBrowsers: [{id: 'bro1', versions: ['1']}]});
108+
const state = mkState({tree, view});
109+
110+
assert.deepEqual(
111+
getAcceptableImagesByStateName(state),
112+
{'b1 first': [imagesById['img1']]}
113+
);
114+
});
88115
});
89116

90117
describe('"mkGetLastImageByStateName" factory', () => {

0 commit comments

Comments
 (0)