-
Notifications
You must be signed in to change notification settings - Fork 3.9k
/
test-max-swipe.js
115 lines (101 loc) · 4.15 KB
/
test-max-swipe.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/**
* Copyright 2019 The AMP HTML Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS-IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {
getScrollingElement,
getSlides,
} from './helpers';
describes.endtoend('AMP carousel max-swipe', {
}, async env => {
const pageWidth = 800;
const pageHeight = 600;
let controller;
let ampDriver;
function prop(el, name) {
return controller.getElementProperty(el, name);
}
function rect(el) {
return controller.getElementRect(el);
}
beforeEach(async() => {
controller = env.controller;
ampDriver = env.ampDriver;
await controller.navigateTo(
'http://localhost:8000/test/manual/amp-base-carousel/max-swipe-one.amp.html');
await ampDriver.toggleExperiment('layers', true);
await ampDriver.toggleExperiment('amp-base-carousel', true);
await controller.setWindowRect({
width: pageWidth,
height: pageHeight,
});
});
describe('looping', () => {
beforeEach(async() => {
await controller.navigateTo(
'http://localhost:8000/test/manual/amp-base-carousel/max-swipe-one.amp.html');
});
it('should only show one slide on each side initially', async() => {
const el = await getScrollingElement(controller);
const slides = await getSlides(controller);
await expect(prop(el, 'scrollLeft')).to.equal(pageWidth);
// Verify the scroll width to make sure no unexpected spacers are
// increasing the width,
await expect(prop(el, 'scrollWidth')).to.equal(pageWidth * 3);
await expect(rect(slides[0])).to.include({x: 0});
await expect(rect(slides[1])).to.include({x: pageWidth});
await expect(rect(slides[slides.length - 1])).to.include({
x: -pageWidth,
});
await expect(prop(slides[2], 'hidden')).to.equal(true);
await expect(prop(slides[slides.length - 2], 'hidden')).to.equal(true);
});
it('should show the correct slides after moving right', async() => {
const el = await getScrollingElement(controller);
const slides = await getSlides(controller);
// Move right by 1 slide.
await controller.scrollBy(el, {left: pageWidth});
// Wait for scroll position to be reset.
await expect(prop(el, 'scrollLeft')).to.equal(pageWidth);
// Verify the scroll width to make sure no unexpected spacers are
// increasing the width,
await expect(prop(el, 'scrollWidth')).to.equal(pageWidth * 3);
await expect(rect(slides[0])).to.include({x: -pageWidth});
await expect(rect(slides[1])).to.include({x: 0});
await expect(rect(slides[2])).to.include({x: pageWidth});
await expect(prop(slides[slides.length - 1], 'hidden')).to.equal(true);
await expect(prop(slides[3], 'hidden')).to.equal(true);
});
it('should show the correct slides after moving left', async() => {
const el = await getScrollingElement(controller);
const slides = await getSlides(controller);
// Move left by 1 slide.
await controller.scrollBy(el, {left: -pageWidth});
// Wait for scroll position to be reset.
await expect(prop(el, 'scrollLeft')).to.equal(pageWidth);
// Verify the scroll width to make sure no unexpected spacers are
// increasing the width,
await expect(prop(el, 'scrollWidth')).to.equal(pageWidth * 3);
await expect(rect(slides[slides.length - 2])).to.include({
x: -pageWidth,
});
await expect(rect(slides[slides.length - 1])).to.include({
x: 0,
});
await expect(rect(slides[0])).to.include({x: pageWidth});
await expect(prop(slides[slides.length - 3], 'hidden')).to.equal(true);
await expect(prop(slides[1], 'hidden')).to.equal(true);
});
});
});