1
0
mirror of https://github.com/S2-/gitlit synced 2025-08-04 05:10:05 +02:00

add node modules to repo

This commit is contained in:
s2
2018-06-03 13:47:11 +02:00
parent e8c95255e8
commit d002126b72
4115 changed files with 440218 additions and 7519 deletions

View File

@@ -0,0 +1,133 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const index_1 = require("../src/index");
const A = require("assert");
const electron_1 = require("electron");
const sinon_1 = require("sinon");
function waitForReady(w) {
return new Promise(resolve => {
const c = w.getWebContents && w.getWebContents();
if (c) {
resolve(w);
return;
}
w.addEventListener('dom-ready', resolve);
});
}
function pause1000ms() {
return new Promise(resolve => {
setTimeout(resolve, 1000);
});
}
context('For browser window', function () {
before(function () {
document.body.innerHTML = '<div>foo bar baz foo bar piyo poyo</div>';
});
describe('searchInPage()', function () {
it('creates search instance which enables in-page search', function () {
const s = index_1.default(electron_1.remote.getCurrentWebContents());
A.ok(s);
A.ok(!s.opened);
A.equal(document.querySelector('webview'), null);
const opened = sinon_1.spy();
s.on('open', opened);
s.openSearchWindow();
A.ok(opened.called);
A.ok(s.opened);
const w = document.querySelector('webview');
A.equal(w.className, 'electron-in-page-search-window search-active');
const started = sinon_1.spy();
s.on('start', started);
const stopped = sinon_1.spy();
s.on('stop', stopped);
const next = sinon_1.spy();
return waitForReady(w)
.then(pause1000ms)
.then(() => {
electron_1.remote.getCurrentWindow().focusOnWebView();
w.executeJavaScript(`(function() {
document.querySelector('.inpage-search-input').value = 'foo';
document.querySelector('.inpage-search-forward').click();
})()`, false);
})
.then(pause1000ms)
.then(() => {
A.ok(started.called);
A.equal(started.args[0][0], 'foo');
s.on('next', next);
w.executeJavaScript(`(function() {
document.querySelector('.inpage-search-forward').click();
})()`, false);
})
.then(pause1000ms)
.then(() => {
A.ok(next.called);
A.equal(next.args[0][0], 'foo');
A.ok(next.args[0][1]);
w.executeJavaScript(`(function() {
document.querySelector('.inpage-search-close').click();
})()`, false);
})
.then(pause1000ms)
.then(() => {
A.ok(!s.opened);
A.ok(stopped.called);
A.equal(w.className, 'electron-in-page-search-window search-inactive');
s.finalize();
A.equal(document.querySelector('webview'), null);
});
});
it('can search words multiple times', function () {
const s = index_1.default(electron_1.remote.getCurrentWebContents());
s.openSearchWindow();
const w = document.querySelector('webview');
const next = sinon_1.spy();
const start = sinon_1.spy();
s.on('next', next);
s.on('start', start);
return waitForReady(w)
.then(pause1000ms)
.then(() => {
electron_1.remote.getCurrentWindow().focusOnWebView();
w.executeJavaScript(`(function() {
document.querySelector('.inpage-search-input').value = 'foo';
const b = document.querySelector('.inpage-search-forward');
b.click();
b.click();
})()`, false);
})
.then(pause1000ms)
.then(() => {
electron_1.remote.getCurrentWindow().focusOnWebView();
w.executeJavaScript(`(function() {
document.querySelector('.inpage-search-input').value = 'ba';
const b = document.querySelector('.inpage-search-forward');
b.click();
b.click();
})()`, false);
})
.then(pause1000ms)
.then(() => {
A.equal(start.args[0][0], 'foo');
A.equal(start.args[1][0], 'ba');
A.equal(next.args[0][0], 'foo');
A.ok(next.args[0][1]);
A.equal(next.args[1][0], 'ba');
A.ok(next.args[1][1]);
})
.then(() => {
w.executeJavaScript(`(function() {
document.querySelector('.inpage-search-close').click();
})()`, false);
})
.then(pause1000ms)
.then(() => {
A.ok(!s.opened);
A.equal(w.className, 'electron-in-page-search-window search-inactive');
s.finalize();
A.equal(document.querySelector('webview'), null);
});
});
});
});
//# sourceMappingURL=smoke_browser_window_test.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"smoke_browser_window_test.js","sourceRoot":"","sources":["smoke_browser_window_test.ts"],"names":[],"mappings":";;AAAA,wCAAwC;AACxC,4BAA4B;AAC5B,uCAAkC;AAClC,iCAA4B;AAE5B,sBAAsB,CAAsB;IACxC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;QACjD,IAAI,CAAC,EAAE;YACH,OAAO,CAAC,CAAC,CAAC,CAAC;YACX,OAAO;SACV;QACD,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC;AAED;IACI,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACP,CAAC;AAED,OAAO,CAAC,oBAAoB,EAAE;IAC1B,MAAM,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,0CAA0C,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE;QACvB,EAAE,CAAC,sDAAsD,EAAE;YACvD,MAAM,CAAC,GAAG,eAAY,CAAC,iBAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACR,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAEhB,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;YAEjD,MAAM,MAAM,GAAG,WAAG,EAAE,CAAC;YACrB,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAErB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACrB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAEf,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAwB,CAAC;YACnE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,8CAA8C,CAAC,CAAC;YAErE,MAAM,OAAO,GAAG,WAAG,EAAE,CAAC;YACtB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEvB,MAAM,OAAO,GAAG,WAAG,EAAE,CAAC;YACtB,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAEtB,MAAM,IAAI,GAAG,WAAG,EAAE,CAAC;YACnB,OAAO,YAAY,CAAC,CAAC,CAAC;iBACjB,IAAI,CAAC,WAAW,CAAC;iBACjB,IAAI,CAAC,GAAG,EAAE;gBACP,iBAAM,CAAC,gBAAgB,EAAE,CAAC,cAAc,EAAE,CAAC;gBAC3C,CAAC,CAAC,iBAAiB,CACf;;;6BAGK,EACL,KAAK,CACR,CAAC;YACN,CAAC,CAAC;iBACD,IAAI,CAAC,WAAW,CAAC;iBACjB,IAAI,CAAC,GAAG,EAAE;gBACP,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACrB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAEnC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAEnB,CAAC,CAAC,iBAAiB,CACf;;6BAEK,EACL,KAAK,CACR,CAAC;YACN,CAAC,CAAC;iBACD,IAAI,CAAC,WAAW,CAAC;iBACjB,IAAI,CAAC,GAAG,EAAE;gBACP,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC,CAAC,iBAAiB,CACf;;6BAEK,EACL,KAAK,CACR,CAAC;YACN,CAAC,CAAC;iBACD,IAAI,CAAC,WAAW,CAAC;iBACjB,IAAI,CAAC,GAAG,EAAE;gBACP,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAChB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACrB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,gDAAgD,CAAC,CAAC;gBACvE,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACb,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE;YAClC,MAAM,CAAC,GAAG,eAAY,CAAC,iBAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAwB,CAAC;YACnE,MAAM,IAAI,GAAG,WAAG,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,WAAG,EAAE,CAAC;YACpB,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACnB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACrB,OAAO,YAAY,CAAC,CAAC,CAAC;iBACjB,IAAI,CAAC,WAAW,CAAC;iBACjB,IAAI,CAAC,GAAG,EAAE;gBACP,iBAAM,CAAC,gBAAgB,EAAE,CAAC,cAAc,EAAE,CAAC;gBAC3C,CAAC,CAAC,iBAAiB,CACf;;;;;6BAKK,EACL,KAAK,CACR,CAAC;YACN,CAAC,CAAC;iBACD,IAAI,CAAC,WAAW,CAAC;iBACjB,IAAI,CAAC,GAAG,EAAE;gBACP,iBAAM,CAAC,gBAAgB,EAAE,CAAC,cAAc,EAAE,CAAC;gBAC3C,CAAC,CAAC,iBAAiB,CACf;;;;;6BAKK,EACL,KAAK,CACR,CAAC;YACN,CAAC,CAAC;iBACD,IAAI,CAAC,WAAW,CAAC;iBACjB,IAAI,CAAC,GAAG,EAAE;gBACP,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACjC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAChC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC/B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,EAAE;gBACP,CAAC,CAAC,iBAAiB,CACf;;6BAEK,EACL,KAAK,CACR,CAAC;YACN,CAAC,CAAC;iBACD,IAAI,CAAC,WAAW,CAAC;iBACjB,IAAI,CAAC,GAAG,EAAE;gBACP,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAChB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,gDAAgD,CAAC,CAAC;gBACvE,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACb,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}

View File

@@ -0,0 +1,162 @@
import searchInPage from '../src/index';
import * as A from 'assert';
import { remote } from 'electron';
import { spy } from 'sinon';
function waitForReady(w: Electron.WebviewTag) {
return new Promise(resolve => {
const c = w.getWebContents && w.getWebContents();
if (c) {
resolve(w);
return;
}
w.addEventListener('dom-ready', resolve);
});
}
function pause1000ms() {
return new Promise(resolve => {
setTimeout(resolve, 1000);
});
}
context('For browser window', function() {
before(function() {
document.body.innerHTML = '<div>foo bar baz foo bar piyo poyo</div>';
});
describe('searchInPage()', function() {
it('creates search instance which enables in-page search', function() {
const s = searchInPage(remote.getCurrentWebContents());
A.ok(s);
A.ok(!s.opened);
A.equal(document.querySelector('webview'), null);
const opened = spy();
s.on('open', opened);
s.openSearchWindow();
A.ok(opened.called);
A.ok(s.opened);
const w = document.querySelector('webview') as Electron.WebviewTag;
A.equal(w.className, 'electron-in-page-search-window search-active');
const started = spy();
s.on('start', started);
const stopped = spy();
s.on('stop', stopped);
const next = spy();
return waitForReady(w)
.then(pause1000ms)
.then(() => {
remote.getCurrentWindow().focusOnWebView();
w.executeJavaScript(
`(function() {
document.querySelector('.inpage-search-input').value = 'foo';
document.querySelector('.inpage-search-forward').click();
})()`,
false,
);
})
.then(pause1000ms)
.then(() => {
A.ok(started.called);
A.equal(started.args[0][0], 'foo');
s.on('next', next);
w.executeJavaScript(
`(function() {
document.querySelector('.inpage-search-forward').click();
})()`,
false,
);
})
.then(pause1000ms)
.then(() => {
A.ok(next.called);
A.equal(next.args[0][0], 'foo');
A.ok(next.args[0][1]);
w.executeJavaScript(
`(function() {
document.querySelector('.inpage-search-close').click();
})()`,
false,
);
})
.then(pause1000ms)
.then(() => {
A.ok(!s.opened);
A.ok(stopped.called);
A.equal(w.className, 'electron-in-page-search-window search-inactive');
s.finalize();
A.equal(document.querySelector('webview'), null);
});
});
it('can search words multiple times', function() {
const s = searchInPage(remote.getCurrentWebContents());
s.openSearchWindow();
const w = document.querySelector('webview') as Electron.WebviewTag;
const next = spy();
const start = spy();
s.on('next', next);
s.on('start', start);
return waitForReady(w)
.then(pause1000ms)
.then(() => {
remote.getCurrentWindow().focusOnWebView();
w.executeJavaScript(
`(function() {
document.querySelector('.inpage-search-input').value = 'foo';
const b = document.querySelector('.inpage-search-forward');
b.click();
b.click();
})()`,
false,
);
})
.then(pause1000ms)
.then(() => {
remote.getCurrentWindow().focusOnWebView();
w.executeJavaScript(
`(function() {
document.querySelector('.inpage-search-input').value = 'ba';
const b = document.querySelector('.inpage-search-forward');
b.click();
b.click();
})()`,
false,
);
})
.then(pause1000ms)
.then(() => {
A.equal(start.args[0][0], 'foo');
A.equal(start.args[1][0], 'ba');
A.equal(next.args[0][0], 'foo');
A.ok(next.args[0][1]);
A.equal(next.args[1][0], 'ba');
A.ok(next.args[1][1]);
})
.then(() => {
w.executeJavaScript(
`(function() {
document.querySelector('.inpage-search-close').click();
})()`,
false,
);
})
.then(pause1000ms)
.then(() => {
A.ok(!s.opened);
A.equal(w.className, 'electron-in-page-search-window search-inactive');
s.finalize();
A.equal(document.querySelector('webview'), null);
});
});
});
});

View File

@@ -0,0 +1,139 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const index_1 = require("../src/index");
const A = require("assert");
const electron_1 = require("electron");
const sinon_1 = require("sinon");
function waitForReady(w) {
return new Promise(resolve => {
const c = w.getWebContents && w.getWebContents();
if (c) {
resolve(w);
return;
}
w.addEventListener('dom-ready', resolve);
});
}
function pause1000ms() {
return new Promise(resolve => {
setTimeout(resolve, 1000);
});
}
context('For <webview>', function () {
let wv;
before(function (done) {
document.body.innerHTML = '';
wv = document.createElement('webview');
wv.src = 'https://example.com';
document.body.appendChild(wv);
wv.addEventListener('dom-ready', () => {
wv.executeJavaScript(`document.body.innerText = 'foo bar baz foo bar piyo poyo'`, false);
done();
});
});
describe('searchInPage()', function () {
it('creates search instance which enables in-page search', function () {
const s = index_1.default(wv);
A.ok(s);
A.ok(!s.opened);
const opened = sinon_1.spy();
s.on('open', opened);
s.openSearchWindow();
A.ok(opened.called);
A.ok(s.opened);
const w = document.querySelector('.electron-in-page-search-window');
A.equal(w.className, 'electron-in-page-search-window search-active');
const started = sinon_1.spy();
s.on('start', started);
const stopped = sinon_1.spy();
s.on('stop', stopped);
const next = sinon_1.spy();
return waitForReady(w)
.then(pause1000ms)
.then(() => {
electron_1.remote.getCurrentWindow().focusOnWebView();
w.executeJavaScript(`(function() {
document.querySelector('.inpage-search-input').value = 'foo';
document.querySelector('.inpage-search-forward').click();
})()`, false);
})
.then(pause1000ms)
.then(() => {
A.ok(started.called);
A.equal(started.args[0][0], 'foo');
s.on('next', next);
w.executeJavaScript(`(function() {
document.querySelector('.inpage-search-forward').click();
})()`, false);
})
.then(pause1000ms)
.then(() => {
A.ok(next.called);
A.equal(next.args[0][0], 'foo');
A.ok(next.args[0][1]);
w.executeJavaScript(`(function() {
document.querySelector('.inpage-search-close').click();
})()`, false);
})
.then(pause1000ms)
.then(() => {
A.ok(!s.opened);
A.ok(stopped.called);
A.equal(w.className, 'electron-in-page-search-window search-inactive');
s.finalize();
});
});
it('can search words multiple times', function () {
const s = index_1.default(wv);
s.openSearchWindow();
const w = document.querySelector('.electron-in-page-search-window');
const next = sinon_1.spy();
const start = sinon_1.spy();
s.on('next', next);
s.on('start', start);
return waitForReady(w)
.then(pause1000ms)
.then(() => {
electron_1.remote.getCurrentWindow().focusOnWebView();
w.executeJavaScript(`(function() {
document.querySelector('.inpage-search-input').value = 'foo';
const b = document.querySelector('.inpage-search-forward');
b.click();
b.click();
})()`, false);
})
.then(pause1000ms)
.then(() => {
electron_1.remote.getCurrentWindow().focusOnWebView();
w.executeJavaScript(`(function() {
document.querySelector('.inpage-search-input').value = 'ba';
const b = document.querySelector('.inpage-search-forward');
b.click();
b.click();
})()`, false);
})
.then(pause1000ms)
.then(() => {
A.equal(start.args[0][0], 'foo');
A.equal(start.args[1][0], 'ba');
A.equal(next.args[0][0], 'foo');
A.ok(next.args[0][1]);
A.equal(next.args[1][0], 'ba');
A.ok(next.args[1][1]);
})
.then(() => {
w.executeJavaScript(`(function() {
document.querySelector('.inpage-search-close').click();
})()`, false);
})
.then(pause1000ms)
.then(() => {
A.ok(!s.opened);
A.equal(w.className, 'electron-in-page-search-window search-inactive');
s.finalize();
A.equal(document.querySelector('.electron-in-page-search-window'), null);
});
});
});
});
//# sourceMappingURL=smoke_webview_test.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"smoke_webview_test.js","sourceRoot":"","sources":["smoke_webview_test.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,168 @@
import searchInPage from '../src/index';
import * as A from 'assert';
import { remote } from 'electron';
import { spy } from 'sinon';
function waitForReady(w: Electron.WebviewTag) {
return new Promise(resolve => {
const c = w.getWebContents && w.getWebContents();
if (c) {
resolve(w);
return;
}
w.addEventListener('dom-ready', resolve);
});
}
function pause1000ms() {
return new Promise(resolve => {
setTimeout(resolve, 1000);
});
}
context('For <webview>', function() {
let wv: Electron.WebviewTag;
before(function(done) {
document.body.innerHTML = '';
wv = document.createElement('webview');
wv.src = 'https://example.com';
document.body.appendChild(wv);
wv.addEventListener('dom-ready', () => {
wv.executeJavaScript(`document.body.innerText = 'foo bar baz foo bar piyo poyo'`, false);
done();
});
});
describe('searchInPage()', function() {
it('creates search instance which enables in-page search', function() {
const s = searchInPage(wv);
A.ok(s);
A.ok(!s.opened);
const opened = spy();
s.on('open', opened);
s.openSearchWindow();
A.ok(opened.called);
A.ok(s.opened);
const w = document.querySelector('.electron-in-page-search-window') as Electron.WebviewTag;
A.equal(w.className, 'electron-in-page-search-window search-active');
const started = spy();
s.on('start', started);
const stopped = spy();
s.on('stop', stopped);
const next = spy();
return waitForReady(w)
.then(pause1000ms)
.then(() => {
remote.getCurrentWindow().focusOnWebView();
w.executeJavaScript(
`(function() {
document.querySelector('.inpage-search-input').value = 'foo';
document.querySelector('.inpage-search-forward').click();
})()`,
false,
);
})
.then(pause1000ms)
.then(() => {
A.ok(started.called);
A.equal(started.args[0][0], 'foo');
s.on('next', next);
w.executeJavaScript(
`(function() {
document.querySelector('.inpage-search-forward').click();
})()`,
false,
);
})
.then(pause1000ms)
.then(() => {
A.ok(next.called);
A.equal(next.args[0][0], 'foo');
A.ok(next.args[0][1]);
w.executeJavaScript(
`(function() {
document.querySelector('.inpage-search-close').click();
})()`,
false,
);
})
.then(pause1000ms)
.then(() => {
A.ok(!s.opened);
A.ok(stopped.called);
A.equal(w.className, 'electron-in-page-search-window search-inactive');
s.finalize();
});
});
it('can search words multiple times', function() {
const s = searchInPage(wv);
s.openSearchWindow();
const w = document.querySelector('.electron-in-page-search-window') as Electron.WebviewTag;
const next = spy();
const start = spy();
s.on('next', next);
s.on('start', start);
return waitForReady(w)
.then(pause1000ms)
.then(() => {
remote.getCurrentWindow().focusOnWebView();
w.executeJavaScript(
`(function() {
document.querySelector('.inpage-search-input').value = 'foo';
const b = document.querySelector('.inpage-search-forward');
b.click();
b.click();
})()`,
false,
);
})
.then(pause1000ms)
.then(() => {
remote.getCurrentWindow().focusOnWebView();
w.executeJavaScript(
`(function() {
document.querySelector('.inpage-search-input').value = 'ba';
const b = document.querySelector('.inpage-search-forward');
b.click();
b.click();
})()`,
false,
);
})
.then(pause1000ms)
.then(() => {
A.equal(start.args[0][0], 'foo');
A.equal(start.args[1][0], 'ba');
A.equal(next.args[0][0], 'foo');
A.ok(next.args[0][1]);
A.equal(next.args[1][0], 'ba');
A.ok(next.args[1][1]);
})
.then(() => {
w.executeJavaScript(
`(function() {
document.querySelector('.inpage-search-close').click();
})()`,
false,
);
})
.then(pause1000ms)
.then(() => {
A.ok(!s.opened);
A.equal(w.className, 'electron-in-page-search-window search-inactive');
s.finalize();
A.equal(document.querySelector('.electron-in-page-search-window'), null);
});
});
});
});