Skip to content

Commit 7cd1e0b

Browse files
authored
Merge pull request #8 from NimaSoroush/fix-screenshot-default
Adding chromy.screenshot()
2 parents c435f1c + 68ec39c commit 7cd1e0b

File tree

6 files changed

+143
-52
lines changed

6 files changed

+143
-52
lines changed

CHANGELOG.md

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
1-
## [0.0.1] - 2017-07-02
1+
## [0.0.10] - 2017-07-07
2+
### Added
3+
- Added chromy.screenshot()
4+
5+
## [0.0.9] - 2017-07-07
26
### Changed
3-
- Initial release
7+
- Fixed bug
48

5-
## [0.0.2] - 2017-07-04
9+
## [0.0.8] - 2017-07-07
610
### Changed
7-
- Fixed screenshot capturing
8-
- Add test functionality
9-
- Examples added
11+
- Fixed bug
1012

11-
## [0.0.3] - 2017-07-05
13+
## [0.0.7] - 2017-07-07
1214
### Changed
13-
- Save differencified screenshots in case mismatch found
14-
- Adding shrinkwrap file to project
15-
- Add option to specify testReportPath
15+
- Enabling option to save differencified image to disk
16+
- Fixed bugs
17+
- Decrease mismatchThreshold
18+
- set default visible to false
1619

17-
## [0.0.4] - 2017-07-06
20+
## [0.0.6] - 2017-07-06
1821
### Changed
19-
- Upgrading chromy to 0.3.2
20-
- Removing shrinkwrap file to project
22+
- fixed logging issue
2123

2224
## [0.0.5] - 2017-07-06
2325
### Changed
@@ -26,21 +28,23 @@
2628
- Update Readme.md
2729
- Added a Dockerfile for local/CI usage
2830

29-
## [0.0.6] - 2017-07-06
31+
## [0.0.4] - 2017-07-06
3032
### Changed
31-
- fixed logging issue
33+
- Upgrading chromy to 0.3.2
34+
- Removing shrinkwrap file to project
3235

33-
## [0.0.7] - 2017-07-07
36+
## [0.0.3] - 2017-07-05
3437
### Changed
35-
- Enabling option to save differencified image to disk
36-
- Fixed bugs
37-
- Decrease mismatchThreshold
38-
- set default visible to false
38+
- Save differencified screenshots in case mismatch found
39+
- Adding shrinkwrap file to project
40+
- Add option to specify testReportPath
3941

40-
## [0.0.8] - 2017-07-07
42+
## [0.0.2] - 2017-07-04
4143
### Changed
42-
- Fixed bug
44+
- Fixed screenshot capturing
45+
- Add test functionality
46+
- Examples added
4347

44-
## [0.0.9] - 2017-07-07
48+
## [0.0.1] - 2017-07-02
4549
### Changed
46-
- Fixed bug
50+
- Initial release

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ async () => {
6464
|name|type|value|
6565
|----|----|-----|
6666
|`goto`|`string`|Url|
67-
|`capture`|`string`|`document` or selector name|
67+
|`capture`|`string`|`undefiend`, `document` or selector name|
6868

6969
##### Coming steps
7070
- wait

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "differencify",
3-
"version": "0.0.9",
3+
"version": "0.0.10",
44
"description": "Perceptual diffing tool",
55
"main": "dist/index.js",
66
"scripts": {

src/chromyRunner.js

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,30 +39,45 @@ class ChromyRunner {
3939
}
4040
break;
4141
case actions.capture:
42-
if (action.value === 'document') {
43-
try {
44-
const png = await chromy.screenshotDocument();
45-
await saveImage(test.name, png, test.type, this.options.screenshots, this.options.testReportPath);
46-
} catch (error) {
47-
logger.error(error);
48-
return false;
49-
}
50-
} else {
51-
try {
52-
const png = await chromy.screenshotSelector(action.value);
53-
await saveImage(test.name, png, test.type, this.options.screenshots, this.options.testReportPath);
54-
} catch (error) {
55-
logger.error(error);
56-
return false;
57-
}
42+
switch (action.value) {
43+
case 'document':
44+
try {
45+
logger.log('Capturing screenshot of whole DOM');
46+
const png = await chromy.screenshotDocument();
47+
await saveImage(test.name, png, test.type, this.options.screenshots, this.options.testReportPath);
48+
} catch (error) {
49+
logger.error(error);
50+
return false;
51+
}
52+
break;
53+
case undefined:
54+
try {
55+
logger.log('Capturing screenshot of chrome window');
56+
const png = await chromy.screenshot();
57+
await saveImage(test.name, png, test.type, this.options.screenshots, this.options.testReportPath);
58+
} catch (error) {
59+
logger.error(error);
60+
return false;
61+
}
62+
break;
63+
default:
64+
try {
65+
logger.log(`Capturing screenshot of ${action.value} selector`);
66+
const png = await chromy.screenshotSelector(action.value);
67+
await saveImage(test.name, png, test.type, this.options.screenshots, this.options.testReportPath);
68+
} catch (error) {
69+
logger.error(error);
70+
return false;
71+
}
72+
break;
5873
}
5974
break;
6075
case actions.test:
6176
try {
77+
logger.log(`comparing -> ${this.options.testReportPath}/${test.name}.png
78+
and ${this.options.screenshots}/${test.name}.png`);
6279
const result = await compareImage(this.options, test.name);
6380
logger.log(result);
64-
logger.log(`campare -> ${this.options.testReportPath}/${test.name}.png
65-
and ${this.options.screenshots}/${test.name}.png`);
6681
} catch (error) {
6782
logger.error(error);
6883
return false;

src/chromyRunner.test.js

Lines changed: 75 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ jest.mock('chromy', () => jest.fn().mockImplementation(() =>
1111
close: jest.fn(),
1212
screenshotDocument: jest.fn(() => 'png file'),
1313
screenshotSelector: jest.fn(() => 'png file'),
14+
screenshot: jest.fn(() => 'png file'),
1415
}),
1516
));
1617

@@ -46,7 +47,8 @@ describe('ChromyRunner', () => {
4647
expect(result).toEqual(true);
4748
expect(chromyRunner.currentTestId).toEqual(1);
4849
expect(loggerCalls[0]).toEqual('goto -> www.example.com');
49-
expect(loggerCalls[1]).toEqual('screenshot saved in -> ./screenshots/default.png');
50+
expect(loggerCalls[1]).toEqual('Capturing screenshot of whole DOM');
51+
expect(loggerCalls[2]).toEqual('screenshot saved in -> ./screenshots/default.png');
5052
expect(chromyRunner.options)
5153
.toEqual({
5254
screenshots: './screenshots',
@@ -65,7 +67,8 @@ describe('ChromyRunner', () => {
6567
expect(result).toEqual(true);
6668
expect(chromyRunner.currentTestId).toEqual(2);
6769
expect(loggerCalls[0]).toEqual('goto -> www.example.com');
68-
expect(loggerCalls[1]).toEqual('screenshot saved in -> ./differencify_report/default.png');
70+
expect(loggerCalls[1]).toEqual('Capturing screenshot of whole DOM');
71+
expect(loggerCalls[2]).toEqual('screenshot saved in -> ./differencify_report/default.png');
6972
expect(chromyRunner.options)
7073
.toEqual({
7174
screenshots: './screenshots',
@@ -87,8 +90,9 @@ describe('ChromyRunner', () => {
8790
testConfig.steps.pop({ name: actions.test, value: globalConfig.testReportPath });
8891
expect(result).toEqual(true);
8992
expect(loggerCalls[0]).toEqual('goto -> www.example.com');
90-
expect(loggerCalls[1]).toEqual('screenshot saved in -> ./differencify_report/default.png');
91-
expect(loggerCalls[2]).toEqual('Writting the diff image to disk');
93+
expect(loggerCalls[1]).toEqual('Capturing screenshot of whole DOM');
94+
expect(loggerCalls[2]).toEqual('screenshot saved in -> ./differencify_report/default.png');
95+
expect(loggerCalls[4]).toEqual('Writting the diff image to disk');
9296
expect(writeFileSyncCalls).toEqual(['./differencify_report/default.png', 'png file']);
9397
});
9498
it('Step runner: update action', async () => {
@@ -97,8 +101,74 @@ describe('ChromyRunner', () => {
97101
const result = await chromyRunner._stepRunner(chromy, testConfig);
98102
expect(result).toEqual(true);
99103
expect(loggerCalls[0]).toEqual('goto -> www.example.com');
100-
expect(loggerCalls[1]).toEqual('screenshot saved in -> ./screenshots/default.png');
104+
expect(loggerCalls[1]).toEqual('Capturing screenshot of whole DOM');
105+
expect(loggerCalls[2]).toEqual('screenshot saved in -> ./screenshots/default.png');
101106
expect(writeFileSyncCalls).toEqual(['./screenshots/default.png', 'png file']);
102107
});
103108
});
109+
describe('Chromy runner', () => {
110+
it('Capture: screenshot', async () => {
111+
const chromy = new Chromy();
112+
const newConfig = {
113+
name: 'default',
114+
resolution: {
115+
width: 800,
116+
height: 600,
117+
},
118+
steps: [
119+
{ name: 'goto', value: 'www.example.com' },
120+
{ name: 'capture' },
121+
],
122+
};
123+
newConfig.type = configTypes.test;
124+
const result = await chromyRunner._stepRunner(chromy, newConfig);
125+
expect(result).toEqual(true);
126+
expect(loggerCalls[0]).toEqual('goto -> www.example.com');
127+
expect(loggerCalls[1]).toEqual('Capturing screenshot of chrome window');
128+
expect(loggerCalls[2]).toEqual('screenshot saved in -> ./differencify_report/default.png');
129+
expect(writeFileSyncCalls).toEqual(['./differencify_report/default.png', 'png file']);
130+
});
131+
it('Capture: screenshotDocument', async () => {
132+
const chromy = new Chromy();
133+
const newConfig = {
134+
name: 'default',
135+
resolution: {
136+
width: 800,
137+
height: 600,
138+
},
139+
steps: [
140+
{ name: 'goto', value: 'www.example.com' },
141+
{ name: 'capture', value: 'document' },
142+
],
143+
};
144+
newConfig.type = configTypes.test;
145+
const result = await chromyRunner._stepRunner(chromy, newConfig);
146+
expect(result).toEqual(true);
147+
expect(loggerCalls[0]).toEqual('goto -> www.example.com');
148+
expect(loggerCalls[1]).toEqual('Capturing screenshot of whole DOM');
149+
expect(loggerCalls[2]).toEqual('screenshot saved in -> ./differencify_report/default.png');
150+
expect(writeFileSyncCalls).toEqual(['./differencify_report/default.png', 'png file']);
151+
});
152+
it('Capture: screenshotDocument', async () => {
153+
const chromy = new Chromy();
154+
const newConfig = {
155+
name: 'default',
156+
resolution: {
157+
width: 800,
158+
height: 600,
159+
},
160+
steps: [
161+
{ name: 'goto', value: 'www.example.com' },
162+
{ name: 'capture', value: '#form' },
163+
],
164+
};
165+
newConfig.type = configTypes.test;
166+
const result = await chromyRunner._stepRunner(chromy, newConfig);
167+
expect(result).toEqual(true);
168+
expect(loggerCalls[0]).toEqual('goto -> www.example.com');
169+
expect(loggerCalls[1]).toEqual('Capturing screenshot of #form selector');
170+
expect(loggerCalls[2]).toEqual('screenshot saved in -> ./differencify_report/default.png');
171+
expect(writeFileSyncCalls).toEqual(['./differencify_report/default.png', 'png file']);
172+
});
173+
});
104174
});

src/index.test.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,17 @@ describe('Differencify', () => {
6363
const result = await differencify.update(testConfig);
6464
expect(result).toEqual(true);
6565
expect(loggerCalls[0]).toEqual('goto -> www.example.com');
66-
expect(loggerCalls[1]).toEqual('screenshot saved in -> screenshots/default.png');
66+
expect(loggerCalls[1]).toEqual('Capturing screenshot of whole DOM');
67+
expect(loggerCalls[2]).toEqual('screenshot saved in -> screenshots/default.png');
6768
expect(writeFileSyncCalls).toEqual(['screenshots', './differencify_report', 'screenshots/default.png', 'png file']);
6869
});
6970
it('test fn', async () => {
7071
const result = await differencify.test(testConfig);
7172
expect(result).toEqual(true);
7273
expect(loggerCalls[0]).toEqual('goto -> www.example.com');
73-
expect(loggerCalls[1]).toEqual('screenshot saved in -> ./differencify_report/default.png');
74-
expect(loggerCalls[2]).toEqual('Writting the diff image to disk');
74+
expect(loggerCalls[1]).toEqual('Capturing screenshot of whole DOM');
75+
expect(loggerCalls[2]).toEqual('screenshot saved in -> ./differencify_report/default.png');
76+
expect(loggerCalls[4]).toEqual('Writting the diff image to disk');
7577
expect(writeFileSyncCalls).toEqual(['./differencify_report/default.png', 'png file']);
7678
});
7779
});

0 commit comments

Comments
 (0)