Skip to content

Commit d3e06d1

Browse files
fix(Demo app): Updated dom query functions to target bottom image comp. Added tests for top image co
1 parent 5f03694 commit d3e06d1

File tree

2 files changed

+73
-43
lines changed

2 files changed

+73
-43
lines changed

e2e/app.e2e-spec.ts

Lines changed: 52 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -22,39 +22,57 @@ describe('ImageLoader Lib E2E Tests', function () {
2222
beforeEach(() => page.setWindowSize(300, 580));
2323

2424
it('should load placeholder image', () => {
25-
expect(page.getImageElement().getAttribute('src')).toEqual('http://via.placeholder.com/35x15?text=placeholder');
25+
expect(page.getImageBottomElement().getAttribute('src')).toEqual('http://via.placeholder.com/35x15?text=placeholder');
2626
});
2727

2828
it('should update placeholder loaded boolean on init', () => {
29-
expect(page.getplaceholderBooleanElement().getText()).toEqual('true');
29+
expect(page.getBottomPlaceholderBooleanElement().getText()).toEqual('true');
3030
});
3131
});
3232

33+
describe('inviewport image on load', () => {
34+
beforeEach(() => page.setWindowSize(300, 580));
35+
36+
it('should load full res image if image is in viewport on page load', () => {
37+
38+
page.setWindowSize(300, 580);
39+
browser.wait(() => page.getLoadedImageTopElement());
40+
41+
const imageLoaderCompClass = page.getImageTopLoaderComp().getAttribute('class');
42+
const imgSrc = page.getImageTopElement().getAttribute('srcset');
43+
expect(imageLoaderCompClass).toContain('sn-image-loaded');
44+
expect(imgSrc).toEqual('http://via.placeholder.com/150x350?text=xs+1x 1x, http://via.placeholder.com/300x700?text=xs+2x 2x');
45+
46+
47+
});
48+
49+
});
50+
3351
describe('lazy load image', () => {
3452
beforeEach(() => page.setWindowSize(300, 580));
3553

36-
it('should load image on when in viewport', () => {
37-
let imageLoaderCompClass = page.getImageLoaderComp().getAttribute('class');
38-
let imgSrc = page.getImageElement().getAttribute('src');
54+
it('should load image when scrolled into viewport', () => {
55+
let imageLoaderCompClass = page.getImageBottomLoaderComp().getAttribute('class');
56+
let imgSrc = page.getImageBottomElement().getAttribute('src');
3957
expect(imageLoaderCompClass).toContain('sn-image-not-loaded');
4058
expect(imgSrc).toEqual('http://via.placeholder.com/35x15?text=placeholder');
4159

42-
page.scrollTo(0, 580 * 1.5);
43-
browser.wait(() => page.getLoadedImageElement());
60+
page.scrollTo(0, 580 * 2);
61+
browser.wait(() => page.getLoadedImageBottomElement());
4462

45-
imageLoaderCompClass = page.getImageLoaderComp().getAttribute('class');
46-
imgSrc = page.getImageElement().getAttribute('srcset');
63+
imageLoaderCompClass = page.getImageBottomLoaderComp().getAttribute('class');
64+
imgSrc = page.getImageBottomElement().getAttribute('srcset');
4765
expect(imageLoaderCompClass).toContain('sn-image-loaded');
4866
expect(imgSrc).toEqual('http://via.placeholder.com/150x350?text=xs+1x 1x, http://via.placeholder.com/300x700?text=xs+2x 2x');
4967

5068
});
5169

52-
it('should update full res image event count on when in viewport', () => {
53-
expect(page.getFullResCountElement().getText()).toEqual('0');
70+
it('should update full res image event count scroll into viewport', () => {
71+
expect(page.getBottomFullResCountElement().getText()).toEqual('0');
5472

55-
page.scrollTo(0, 580 * 1.5);
56-
browser.wait(() => page.getLoadedImageElement());
57-
expect(page.getFullResCountElement().getText()).toEqual('1');
73+
page.scrollTo(0, 580 * 2);
74+
browser.wait(() => page.getLoadedImageBottomElement());
75+
expect(page.getBottomFullResCountElement().getText()).toEqual('1');
5876
});
5977

6078
});
@@ -63,49 +81,49 @@ describe('ImageLoader Lib E2E Tests', function () {
6381

6482
it('should load correct image for "xs" device size', () => {
6583
page.setWindowSize(300, 580);
66-
page.scrollTo(0, 580 * 1.5);
67-
browser.wait(() => page.getLoadedImageElement());
68-
const imageLoaderCompClass = page.getImageLoaderComp().getAttribute('class');
69-
const imgSrc = page.getImageElement().getAttribute('srcset');
84+
page.scrollTo(0, 580 * 2);
85+
browser.wait(() => page.getLoadedImageBottomElement());
86+
const imageLoaderCompClass = page.getImageBottomLoaderComp().getAttribute('class');
87+
const imgSrc = page.getImageBottomElement().getAttribute('srcset');
7088
expect(imageLoaderCompClass).toContain('sn-image-loaded');
7189
expect(imgSrc).toEqual('http://via.placeholder.com/150x350?text=xs+1x 1x, http://via.placeholder.com/300x700?text=xs+2x 2x');
7290
});
7391

7492
it('should load correct image for "md" device size', () => {
7593
page.setWindowSize(768, 580);
76-
page.scrollTo(0, 580 * 1.5);
77-
browser.wait(() => page.getLoadedImageElement());
94+
page.scrollTo(0, 580 * 2.5);
95+
browser.wait(() => page.getLoadedImageBottomElement());
7896

79-
const imgSrc = page.getImageElement().getAttribute('srcset');
97+
const imgSrc = page.getImageBottomElement().getAttribute('srcset');
8098
expect(imgSrc).toEqual('http://via.placeholder.com/350x250?text=md+1x 1x, http://via.placeholder.com/700x500?text=md+2x 2x');
8199
});
82100

83101
it('should load correct image for "lg" device size', () => {
84102
page.setWindowSize(1024, 580);
85-
page.scrollTo(0, 580 * 1.5);
86-
browser.wait(() => page.getLoadedImageElement());
103+
page.scrollTo(0, 580 * 2);
104+
browser.wait(() => page.getLoadedImageBottomElement());
87105

88-
const imgSrc = page.getImageElement().getAttribute('srcset');
106+
const imgSrc = page.getImageBottomElement().getAttribute('srcset');
89107
expect(imgSrc).toEqual('http://via.placeholder.com/700x400?text=lg+1x 1x, http://via.placeholder.com/1400x800?text=lg+2x 2x');
90108
});
91109

92110
it('should update image loaded event count on window resize when image in viewport', () => {
93-
expect(page.getFullResCountElement().getText()).toEqual('0');
111+
expect(page.getBottomFullResCountElement().getText()).toEqual('0');
94112

95113
page.setWindowSize(320, 580);
96-
page.scrollTo(0, 580 * 1.5);
97-
browser.wait(() => page.getLoadedImageElement());
98-
expect(page.getFullResCountElement().getText()).toEqual('1');
114+
page.scrollTo(0, 580 * 3);
115+
browser.wait(() => page.getLoadedImageBottomElement());
116+
expect(page.getBottomFullResCountElement().getText()).toEqual('1');
99117

100118
page.setWindowSize(768, 580);
101-
page.scrollTo(0, 580 * 1.5);
102-
browser.wait(() => page.getLoadedImageElement());
103-
expect(page.getFullResCountElement().getText()).toEqual('2');
119+
page.scrollTo(0, 580 * 3);
120+
browser.wait(() => page.getLoadedImageBottomElement());
121+
expect(page.getBottomFullResCountElement().getText()).toEqual('2');
104122

105123
page.setWindowSize(1024, 580);
106-
page.scrollTo(0, 580 * 1.5);
107-
browser.wait(() => page.getLoadedImageElement());
108-
expect(page.getFullResCountElement().getText()).toEqual('3');
124+
page.scrollTo(0, 580 * 3);
125+
browser.wait(() => page.getLoadedImageBottomElement());
126+
expect(page.getBottomFullResCountElement().getText()).toEqual('3');
109127
});
110128

111129
});

e2e/app.po.ts

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,39 @@ export class AppPage {
1313
return browser.driver.manage().window().setSize(x, y);
1414
}
1515

16-
getImageLoaderComp() {
17-
return element(by.css('sn-image-loader'));
16+
getImageTopLoaderComp() {
17+
return element(by.css('.sn-image-loader--top'));
1818
}
1919

20-
getImageElement() {
21-
return element(by.css('sn-image-loader .foo'));
20+
getImageBottomLoaderComp() {
21+
return element(by.css('.sn-image-loader--bottom'));
2222
}
2323

24-
getLoadedImageElement() {
25-
return element(by.css('.sn-image-loaded')).isPresent();
24+
getImageTopElement() {
25+
return element(by.css('.sn-image-loader--top .img'));
26+
}
27+
28+
getImageBottomElement() {
29+
return element(by.css('.sn-image-loader--bottom .img'));
30+
}
31+
32+
getLoadedImageBottomElement() {
33+
return element(by.css('.sn-image-loader--bottom.sn-image-loaded')).isPresent();
34+
}
35+
36+
getLoadedImageTopElement() {
37+
return element(by.css('.sn-image-loader--top.sn-image-loaded')).isPresent();
2638
}
2739

2840
getLoadedImageElementBySrcSet(srcSet) {
29-
return element(by.css(`img[srcSet="${srcSet}"]`)).isPresent();
41+
return element(by.css(`.img--bottom[srcSet="${srcSet}"]`)).isPresent();
3042
}
3143

32-
getplaceholderBooleanElement() {
44+
getBottomPlaceholderBooleanElement() {
3345
return element(by.css('.placeholder-boolean'));
3446
}
3547

36-
getFullResCountElement() {
48+
getBottomFullResCountElement() {
3749
return element(by.css('.full-res-count'));
3850
}
3951
}

0 commit comments

Comments
 (0)