12 Commits

Author SHA1 Message Date
f2430d095f 1.0.13 2019-06-03 17:17:20 +02:00
d79a5af51a fix(core): update 2019-06-03 17:17:20 +02:00
318bdd1bd8 1.0.12 2019-06-03 17:16:47 +02:00
54a0ec6c71 fix(core): update 2019-06-03 17:16:47 +02:00
8853eecbb9 1.0.11 2019-05-29 14:14:26 +02:00
1bfca4456c fix(core): update 2019-05-29 14:14:26 +02:00
b337e4c779 1.0.10 2019-05-29 08:57:17 +02:00
53d56d2d8a fix(core): update 2019-05-29 08:57:17 +02:00
e3781cfd4d 1.0.9 2019-05-28 23:29:25 +02:00
eca90bdf64 fix(core): update 2019-05-28 23:29:24 +02:00
b35b3f6c0b 1.0.8 2019-05-28 23:28:44 +02:00
d3509b8834 fix(core): update 2019-05-28 23:28:43 +02:00
10 changed files with 818 additions and 149 deletions

View File

@ -20,13 +20,6 @@ puppeteer wrapper for easy tasks
Use TypeScript for best in class instellisense. Use TypeScript for best in class instellisense.
For further information read the linked docs at the top of this README.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
[![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://push.rocks)
For further information read the linked docs at the top of this readme. For further information read the linked docs at the top of this readme.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)

768
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,12 @@
{ {
"name": "@pushrocks/smartbrowser", "name": "@pushrocks/smartbrowser",
"version": "1.0.7", "version": "1.0.13",
"description": "simplified puppeteer", "description": "simplified puppeteer",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",
"scripts": { "scripts": {
"test": "(npmts)", "test": "tstest test/",
"build": "echo \"Not needed for now\"" "build": "tsbuild"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -19,13 +19,16 @@
}, },
"homepage": "https://gitlab.com/pushrocks/smartbrowser#README", "homepage": "https://gitlab.com/pushrocks/smartbrowser#README",
"dependencies": { "dependencies": {
"@pushrocks/smartdelay": "^2.0.3",
"@pushrocks/smartpdf": "^1.0.17",
"@pushrocks/smartunique": "^3.0.1",
"puppeteer": "^1.17.0" "puppeteer": "^1.17.0"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.11", "@gitzone/tsbuild": "^2.1.11",
"@gitzone/tstest": "^1.0.24", "@gitzone/tstest": "^1.0.24",
"@pushrocks/tapbundle": "^3.0.9", "@pushrocks/tapbundle": "^3.0.9",
"tslint": "^5.16.0", "tslint": "^5.17.0",
"tslint-config-prettier": "^1.18.0" "tslint-config-prettier": "^1.18.0"
}, },
"private": true, "private": true,

View File

@ -1,6 +0,0 @@
<head>
<title>Test</title>
</head>
<body>
Test
</body>

View File

@ -1,33 +0,0 @@
"use strict";
require("typings-test");
const should = require("should");
const smartbrowser = require("../dist/index");
let testSmartBrowser;
describe('smartbrowser', () => {
it('should instanstiate a new browser ', function () {
testSmartBrowser = new smartbrowser.Smartbrowser({
webroot: './test/assets/',
watchFiles: ['./test/assets/']
});
should(testSmartBrowser).be.instanceof(smartbrowser.Smartbrowser);
});
it('should start the browser ', function (done) {
testSmartBrowser.start().then((bsInstance) => {
done();
}).catch((err) => { console.log(err); });
});
it('should stop the browser ', function (done) {
this.timeout(10000);
setTimeout(() => {
testSmartBrowser.stop().then(() => {
done();
}).catch((err) => { console.log(err); });
}, 2000);
});
it('should exit correctly', function () {
setTimeout(() => {
process.exit(0);
}, 2000);
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFxQjtBQUNyQixpQ0FBZ0M7QUFFaEMsOENBQTZDO0FBRTdDLElBQUksZ0JBQTJDLENBQUE7QUFFL0MsUUFBUSxDQUFDLGNBQWMsRUFBRTtJQUNyQixFQUFFLENBQUMsb0NBQW9DLEVBQUU7UUFDckMsZ0JBQWdCLEdBQUcsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDO1lBQzdDLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsVUFBVSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7U0FDakMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDckUsQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUMsMkJBQTJCLEVBQUUsVUFBVSxJQUFJO1FBQzFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVU7WUFDckMsSUFBSSxFQUFFLENBQUE7UUFDVixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNDLENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLDBCQUEwQixFQUFFLFVBQVUsSUFBSTtRQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ25CLFVBQVUsQ0FBQztZQUNQLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDekIsSUFBSSxFQUFFLENBQUE7WUFDVixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNaLENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLHVCQUF1QixFQUFDO1FBQ3ZCLFVBQVUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbkIsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFBO0lBQ1gsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQSJ9

View File

@ -1,32 +1,29 @@
import { tap, expect } from 'tapbundle'; import { tap, expect } from '@pushrocks/tapbundle';
import * as smartdelay from 'smartdelay';
import * as smartbrowser from '../dist/index'; import * as smartbrowser from '../ts/index';
let testSmartBrowser: smartbrowser.Smartbrowser; let testSmartBrowser: smartbrowser.SmartBrowser;
tap tap.test('should instanstiate a new browser ', async () => {
.test('should instanstiate a new browser ', async () => { testSmartBrowser = new smartbrowser.SmartBrowser();
testSmartBrowser = new smartbrowser.Smartbrowser({ return expect(testSmartBrowser).to.be.instanceof(smartbrowser.SmartBrowser);
webroot: './test/assets/', });
watchFiles: ['./test/assets/']
});
return expect(testSmartBrowser).to.be.instanceof(smartbrowser.Smartbrowser);
})
.catch(tap.threw);
tap tap.test('should start the browser ', async () => {
.test('should start the browser ', async () => { await expect(testSmartBrowser.start()).to.eventually.be.fulfilled;
return await expect(testSmartBrowser.start()).to.eventually.be.fulfilled; });
})
.catch(tap.threw); tap.test('should create a PDF from a page', async tools => {
const result = await testSmartBrowser.pdfFromPage('https://lossless.com');
expect(result.buffer).to.be.instanceOf(Buffer);
});
tap.test('should produce a valid screenshot', async tools => {
const result = await testSmartBrowser.screenshotFromPage('https://lossless.com');
expect(result.buffer).to.be.instanceOf(Buffer);
});
tap.test('should stop the browser ', async () => { tap.test('should stop the browser ', async () => {
return await smartdelay.delayFor(2000).then(() => { await expect(testSmartBrowser.stop()).to.eventually.be.fulfilled;
return expect(testSmartBrowser.stop()).to.eventually.be.fulfilled;
});
});
tap.test('should exit correctly', async () => {
smartdelay.delayFor(2000).then(() => {
process.exit(0);
});
}); });
tap.start();

View File

@ -1,3 +1,75 @@
import * as plugins from './smartbrowser.plugins'; import * as plugins from './smartbrowser.plugins';
export class SmartBrowser {} import * as interfaces from './interfaces';
/**
* SmartBrowser
*/
export class SmartBrowser {
public headlessBrowser: plugins.puppeteer.Browser;
public smartpdf: plugins.smartpdf.SmartPdf;
/**
* create a pdf from page
* @param urlArg
*/
public pdfFromPage(urlArg: string) {
const result = this.smartpdf.getFullWebsiteAsSinglePdf(urlArg);
return result;
}
/**
* make a screenshot from a page
* @param urlArg
*/
public async screenshotFromPage(urlArg: string): Promise<interfaces.IScreenShotResult> {
const pageId = plugins.smartunique.shortId();
const page = await this.headlessBrowser.newPage();
await page.goto(urlArg, {
waitUntil: 'networkidle2'
});
const screenshotBuffer = await page.screenshot({
encoding: 'binary'
});
await page.close();
return {
name: pageId,
id: `${pageId}.js`,
buffer: screenshotBuffer
};
}
/**
* evalutes an expression on a page
* @param urlArg
* @param funcArg
*/
public async evaluateOnPage(urlArg: string, funcArg: () => Promise<any>) {
const page = await this.headlessBrowser.newPage();
await page.goto(urlArg, {
waitUntil: 'networkidle2'
});
}
/**
* start a page
*/
public async start() {
this.headlessBrowser = await plugins.puppeteer.launch({
defaultViewport: {
width: 1600,
height: 1080
}
});
this.smartpdf = new plugins.smartpdf.SmartPdf();
await this.smartpdf.start(this.headlessBrowser);
}
/**
* stops the smartbrowser instance
*/
public async stop() {
await this.headlessBrowser.close();
await this.smartpdf.stop();
}
}

1
ts/interfaces/index.ts Normal file
View File

@ -0,0 +1 @@
export * from './interfaces.screenshotresult';

View File

@ -0,0 +1,5 @@
export interface IScreenShotResult {
name: string;
id: string;
buffer: Buffer;
}

View File

@ -1,3 +1,10 @@
import 'typings-global'; // pushrocks scope
export import browserSync = require('browser-sync'); import * as smartpdf from '@pushrocks/smartpdf';
export import smartq = require('smartq'); import * as smartunique from '@pushrocks/smartunique';
export { smartpdf, smartunique };
// third party
import puppeteer from 'puppeteer';
export { puppeteer };