-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest.spec.js
92 lines (82 loc) · 2.44 KB
/
test.spec.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
import { beforeHook, beforeEachHook, afterHook, browser } from 'karma-event-driver-ext/cjs/event-driver-hooks';
let { $serial } = browser;
describe('Event Drive Tests', function() {
// increase timeout
jasmine.DEFAULT_TIMEOUT_INTERVAL = 2000000;
beforeAll((done) => {
beforeHook(done);
});
afterAll((done) => {
afterHook(done);
});
beforeEach(() => {
beforeEachHook();
});
it('Simple Demo', async (done) => {
var div = document.createElement('div');
document.body.appendChild(div);
div.innerHTML = 'Click Me';
var a = 1;
div.onclick = function() {
a++
};
await browser
.click(div)
.$apply();
expect(a).toBe(2);
done();
});
it('Async Demo', async (done) => {
var div = document.createElement('div');
div.innerHTML = 'Click Me';
var a = 1;
div.onclick = function() {
a++;
setTimeout(() => {
a++;
browser.$next();
}, 500);
};
document.body.appendChild(div);
await browser
.click(div)
.$apply('applyAndWaitForNext'); // equal to .$applyAndWaitForNext();
expect(a).toBe(3);
done();
});
it('React Like Demo', (done) => {
var div = document.createElement('div');
div.innerHTML = 'Click Me';
var a = 1;
div.onclick = function() {
a++;
setTimeout(() => {
a++;
browser.$next();
}, 500);
};
let render = () => {
document.body.appendChild(div);
browser.$next(); // start $serial
}
// return a promise
// won't start executing util browser.$next is called
$serial(
async () => {
await browser
.click(div)
.$apply('applyAndWaitForNext'); // equal to .$applyAndWaitForNext()
expect(a).toBe(3);
},
async () => {
await browser
.click(div)
.$apply('applyAndWaitForNext'); // equal to .$applyAndWaitForNext()
expect(a).toBe(5);
done(); // end 'it'
}
); // .then(done, done);
// before or after $serial both works
render();
});
});