@@ -2,7 +2,7 @@ import {task} from 'gulp';
2
2
import { readdirSync , statSync , existsSync , mkdirSync } from 'fs' ;
3
3
import { openScreenshotsCloudStorage , openFirebaseScreenshotsDatabase } from '../task_helpers' ;
4
4
import * as path from 'path' ;
5
- import * as firebase from 'firebase' ;
5
+ import * as admin from 'firebase-admin ' ;
6
6
const imageDiff = require ( 'image-diff' ) ;
7
7
8
8
const SCREENSHOT_DIR = './screenshots' ;
@@ -25,33 +25,33 @@ task('screenshots', () => {
25
25
}
26
26
} ) ;
27
27
28
- function updateFileResult ( database : firebase . database . Database , prNumber : string ,
29
- filenameKey : string , result : boolean ) : firebase . Promise < void > {
28
+ function updateFileResult ( database : admin . database . Database , prNumber : string ,
29
+ filenameKey : string , result : boolean ) : admin . Promise < void > {
30
30
return database . ref ( FIREBASE_REPORT ) . child ( `${ prNumber } /results/${ filenameKey } ` ) . set ( result ) ;
31
31
}
32
32
33
- function updateResult ( database : firebase . database . Database , prNumber : string ,
34
- result : boolean ) : firebase . Promise < void > {
33
+ function updateResult ( database : admin . database . Database , prNumber : string ,
34
+ result : boolean ) : admin . Promise < void > {
35
35
return database . ref ( FIREBASE_REPORT ) . child ( `${ prNumber } /result` ) . set ( result ) ;
36
36
}
37
37
38
- function updateCommit ( database : firebase . database . Database ,
39
- prNumber : string ) : firebase . Promise < void > {
38
+ function updateCommit ( database : admin . database . Database ,
39
+ prNumber : string ) : admin . Promise < void > {
40
40
return database . ref ( FIREBASE_REPORT ) . child ( `${ prNumber } /commit` )
41
41
. set ( process . env [ 'TRAVIS_COMMIT' ] ) ;
42
42
}
43
43
44
44
/** Get a list of filenames from firebase database. */
45
- function getScreenFilenames ( database : firebase . database . Database ) : firebase . Promise < string [ ] > {
45
+ function getScreenFilenames ( database : admin . database . Database ) : admin . Promise < string [ ] > {
46
46
return database . ref ( FIREBASE_FILELIST ) . once ( 'value' )
47
- . then ( ( snapshots : firebase . database . DataSnapshot ) => {
47
+ . then ( ( snapshots : admin . database . DataSnapshot ) => {
48
48
return snapshots . val ( ) ;
49
49
} ) ;
50
50
}
51
51
52
52
/** Upload a list of filenames to firebase database as gold. */
53
- function setScreenFilenames ( database : firebase . database . Database ,
54
- reportKey ?: string ) : firebase . Promise < void > {
53
+ function setScreenFilenames ( database : admin . database . Database ,
54
+ reportKey ?: string ) : admin . Promise < void > {
55
55
let filenames : string [ ] = [ ] ;
56
56
readdirSync ( SCREENSHOT_DIR ) . map ( ( file : string ) => {
57
57
let fullName = path . join ( SCREENSHOT_DIR , file ) ;
@@ -78,7 +78,7 @@ function setScreenFilenames(database: firebase.database.Database,
78
78
function uploadScreenshots ( reportKey ?: string , mode ?: 'test' | 'diff' ) {
79
79
let bucket = openScreenshotsCloudStorage ( ) ;
80
80
81
- let promises : firebase . Promise < void > [ ] = [ ] ;
81
+ let promises : admin . Promise < void > [ ] = [ ] ;
82
82
let localDir = mode == 'diff' ? `${ SCREENSHOT_DIR } /diff` : SCREENSHOT_DIR ;
83
83
readdirSync ( localDir ) . map ( ( file : string ) => {
84
84
let fileName = path . join ( localDir , file ) ;
@@ -90,7 +90,7 @@ function uploadScreenshots(reportKey?: string, mode?: 'test' | 'diff') {
90
90
promises . push ( bucket . upload ( fileName , { destination : destination } ) ) ;
91
91
}
92
92
} ) ;
93
- return firebase . Promise . all ( promises ) ;
93
+ return admin . Promise . all ( promises ) ;
94
94
}
95
95
96
96
/** Check whether the directory exists. If not then create one. */
@@ -102,11 +102,11 @@ function _makeDir(dirName: string) {
102
102
103
103
/** Download golds screenshots. */
104
104
function downloadAllGolds (
105
- filenames : string [ ] , database : firebase . database . Database ,
106
- reportKey : string ) : firebase . Promise < boolean > {
105
+ filenames : string [ ] , database : admin . database . Database ,
106
+ reportKey : string ) : admin . Promise < boolean > {
107
107
_makeDir ( `${ SCREENSHOT_DIR } /golds` ) ;
108
108
109
- return firebase . Promise . all ( filenames . map ( ( filename : string ) => {
109
+ return admin . Promise . all ( filenames . map ( ( filename : string ) => {
110
110
return downloadGold ( filename ) . then ( ( ) => diffScreenshot ( filename , database , reportKey ) ) ;
111
111
} ) ) . then ( ( results : boolean [ ] ) => results . every ( ( value : boolean ) => value == true ) ) ;
112
112
}
@@ -119,16 +119,16 @@ function downloadGold(filename: string): Promise<void> {
119
119
} ) ;
120
120
}
121
121
122
- function diffScreenshot ( filename : string , database : firebase . database . Database ,
123
- reportKey : string ) : firebase . Promise < boolean > {
122
+ function diffScreenshot ( filename : string , database : admin . database . Database ,
123
+ reportKey : string ) : admin . Promise < boolean > {
124
124
// TODO(tinayuangao): Run the downloads and diffs in parallel.
125
125
let goldUrl = `${ SCREENSHOT_DIR } /golds/${ filename } ` ;
126
126
let pullRequestUrl = `${ SCREENSHOT_DIR } /${ filename } ` ;
127
127
let diffUrl = `${ SCREENSHOT_DIR } /diff/${ filename } ` ;
128
128
let filenameKey = filename . replace ( '.screenshot.png' , '' ) ;
129
129
130
130
if ( existsSync ( goldUrl ) && existsSync ( pullRequestUrl ) ) {
131
- return new firebase . Promise ( ( resolve : any , reject : any ) => {
131
+ return new admin . Promise ( ( resolve : any , reject : any ) => {
132
132
imageDiff ( {
133
133
actualImage : pullRequestUrl ,
134
134
expectedImage : goldUrl ,
0 commit comments