Skip to content

Commit 1de495c

Browse files
committed
Add function to update github commit status
1 parent 8b8b63a commit 1de495c

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

tools/gulp/tasks/screenshots.ts

+39-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {readdirSync, statSync, existsSync, mkdirSync} from 'fs';
33
import {openScreenshotsCloudStorage, openFirebaseScreenshotsDatabase} from '../task_helpers';
44
import * as path from 'path';
55
import * as admin from 'firebase-admin';
6+
const request = require('request');
67
const imageDiff = require('image-diff');
78

89
const SCREENSHOT_DIR = './screenshots';
@@ -17,6 +18,7 @@ task('screenshots', () => {
1718
return getScreenFilenames(database)
1819
.then((filenames: string[]) => downloadAllGolds(filenames, database, prNumber))
1920
.then((results: boolean) => updateResult(database, prNumber, results))
21+
.then((result: boolean) => updateGithubStatus(result, prNumber))
2022
.then(() => setScreenFilenames(database, prNumber))
2123
.then(() => uploadScreenshots(prNumber, 'diff'))
2224
.then(() => uploadScreenshots(prNumber, 'test'))
@@ -32,7 +34,7 @@ function updateFileResult(database: admin.database.Database, prNumber: string,
3234

3335
function updateResult(database: admin.database.Database, prNumber: string,
3436
result: boolean): admin.Promise<void> {
35-
return database.ref(FIREBASE_REPORT).child(`${prNumber}/result`).set(result);
37+
return database.ref(FIREBASE_REPORT).child(`${prNumber}/result`).set(result).then(() => result);
3638
}
3739

3840
function updateTravis(database: admin.database.Database,
@@ -150,3 +152,39 @@ function diffScreenshot(filename: string, database: admin.database.Database,
150152
return updateFileResult(database, reportKey, filenameKey, false).then(() => false);
151153
}
152154
}
155+
156+
function decode(value: string): string {
157+
return value.split('').reverse().join('');
158+
}
159+
160+
function updateGithubStatus(result: boolean, prNumber: string) {
161+
let state = result ? 'success' : 'failure';
162+
let sha = process.env['TRAVIS_PULL_REQUEST_SHA'];
163+
let token = decode(process.env['MATERIAL2_GITHUB_STATUS_TOKEN']);
164+
165+
let data = JSON.stringify({
166+
"state": state,
167+
"target_url": `http://material2-screenshots.firebaseapp.com/${prNumber}`,
168+
"context": "screenshot-diff",
169+
"description": `Screenshot test ${state}`
170+
});
171+
172+
let headers = {
173+
'Authorization': `token ${token}`,
174+
'User-Agent': 'ScreenshotDiff/1.0.0',
175+
'Content-Type': 'application/json',
176+
'Content-Length': Buffer.byteLength(data)
177+
};
178+
179+
return new admin.Promise((resolve, reject) => {
180+
request({
181+
url: `https://api.github.com/repos/angular/material2/statuses/${sha}`,
182+
method: 'POST',
183+
form: data,
184+
headers: headers
185+
}, function (error: any, response: any, body: any){
186+
resolve(response.statusCode);
187+
console.log(response.statusCode);
188+
});
189+
});
190+
}

tools/gulp/tsconfig.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"declaration": true,
44
"emitDecoratorMetadata": true,
55
"experimentalDecorators": true,
6-
"lib": ["es6", "es2015"],
6+
"lib": ["es6", "es2015", "dom"],
77
"module": "commonjs",
88
"moduleResolution": "node",
99
"noEmitOnError": true,

0 commit comments

Comments
 (0)