test: enable linting of ts-smoke and fix all issues (#37322)

This commit is contained in:
Milan Burda 2023-02-17 19:56:09 +01:00 committed by GitHub
parent ee87438d28
commit e34cc6f48c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 495 additions and 478 deletions

View file

@ -22,10 +22,7 @@ process.env.PATH = `${process.env.PATH}${path.delimiter}${DEPOT_TOOLS}`;
const IGNORELIST = new Set([ const IGNORELIST = new Set([
['shell', 'browser', 'resources', 'win', 'resource.h'], ['shell', 'browser', 'resources', 'win', 'resource.h'],
['shell', 'common', 'node_includes.h'], ['shell', 'common', 'node_includes.h'],
['spec', 'fixtures', 'pages', 'jquery-3.6.0.min.js'], ['spec', 'fixtures', 'pages', 'jquery-3.6.0.min.js']
['spec', 'ts-smoke', 'electron', 'main.ts'],
['spec', 'ts-smoke', 'electron', 'renderer.ts'],
['spec', 'ts-smoke', 'runner.js']
].map(tokens => path.join(ELECTRON_ROOT, ...tokens))); ].map(tokens => path.join(ELECTRON_ROOT, ...tokens)));
const IS_WINDOWS = process.platform === 'win32'; const IS_WINDOWS = process.platform === 'win32';

File diff suppressed because it is too large Load diff

View file

@ -6,67 +6,65 @@ import {
clipboard, clipboard,
crashReporter, crashReporter,
shell shell
} from 'electron' } from 'electron';
import * as fs from 'fs'
// In renderer process (web page). // In renderer process (web page).
// https://github.com/electron/electron/blob/main/docs/api/ipc-renderer.md // https://github.com/electron/electron/blob/main/docs/api/ipc-renderer.md
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong" console.log(ipcRenderer.sendSync('synchronous-message', 'ping')); // prints "pong"
ipcRenderer.on('asynchronous-reply', (event, arg: any) => { ipcRenderer.on('asynchronous-reply', (event, arg: any) => {
console.log(arg) // prints "pong" console.log(arg); // prints "pong"
event.sender.send('another-message', 'Hello World!') event.sender.send('another-message', 'Hello World!');
}) });
ipcRenderer.send('asynchronous-message', 'ping') ipcRenderer.send('asynchronous-message', 'ping');
// web-frame // web-frame
// https://github.com/electron/electron/blob/main/docs/api/web-frame.md // https://github.com/electron/electron/blob/main/docs/api/web-frame.md
webFrame.setZoomFactor(2) webFrame.setZoomFactor(2);
console.log(webFrame.getZoomFactor()) console.log(webFrame.getZoomFactor());
webFrame.setZoomLevel(200) webFrame.setZoomLevel(200);
console.log(webFrame.getZoomLevel()) console.log(webFrame.getZoomLevel());
webFrame.setVisualZoomLevelLimits(50, 200) webFrame.setVisualZoomLevelLimits(50, 200);
webFrame.setSpellCheckProvider('en-US', { webFrame.setSpellCheckProvider('en-US', {
spellCheck (words, callback) { spellCheck (words, callback) {
setTimeout(() => { setTimeout(() => {
const spellchecker = require('spellchecker') const spellchecker = require('spellchecker');
const misspelled = words.filter(x => spellchecker.isMisspelled(x)) const misspelled = words.filter(x => spellchecker.isMisspelled(x));
callback(misspelled) callback(misspelled);
}, 0) }, 0);
} }
}) });
webFrame.insertText('text') webFrame.insertText('text');
webFrame.executeJavaScript('return true;').then((v: boolean) => console.log(v)) webFrame.executeJavaScript('return true;').then((v: boolean) => console.log(v));
webFrame.executeJavaScript('return true;', true).then((v: boolean) => console.log(v)) webFrame.executeJavaScript('return true;', true).then((v: boolean) => console.log(v));
webFrame.executeJavaScript('return true;', true) webFrame.executeJavaScript('return true;', true);
webFrame.executeJavaScript('return true;', true).then((result: boolean) => console.log(result)) webFrame.executeJavaScript('return true;', true).then((result: boolean) => console.log(result));
console.log(webFrame.getResourceUsage()) console.log(webFrame.getResourceUsage());
webFrame.clearCache() webFrame.clearCache();
// clipboard // clipboard
// https://github.com/electron/electron/blob/main/docs/api/clipboard.md // https://github.com/electron/electron/blob/main/docs/api/clipboard.md
clipboard.writeText('Example String') clipboard.writeText('Example String');
clipboard.writeText('Example String', 'selection') clipboard.writeText('Example String', 'selection');
console.log(clipboard.readText('selection')) console.log(clipboard.readText('selection'));
console.log(clipboard.availableFormats()) console.log(clipboard.availableFormats());
clipboard.clear() clipboard.clear();
clipboard.write({ clipboard.write({
html: '<html></html>', html: '<html></html>',
text: 'Hello World!', text: 'Hello World!',
bookmark: 'Bookmark name', bookmark: 'Bookmark name',
image: clipboard.readImage() image: clipboard.readImage()
}) });
// crash-reporter // crash-reporter
// https://github.com/electron/electron/blob/main/docs/api/crash-reporter.md // https://github.com/electron/electron/blob/main/docs/api/crash-reporter.md
@ -76,14 +74,14 @@ crashReporter.start({
companyName: 'YourCompany', companyName: 'YourCompany',
submitURL: 'https://your-domain.com/url-to-submit', submitURL: 'https://your-domain.com/url-to-submit',
uploadToServer: true uploadToServer: true
}) });
// desktopCapturer // desktopCapturer
// https://github.com/electron/electron/blob/main/docs/api/desktop-capturer.md // https://github.com/electron/electron/blob/main/docs/api/desktop-capturer.md
desktopCapturer.getSources({ types: ['window', 'screen'] }).then(sources => { desktopCapturer.getSources({ types: ['window', 'screen'] }).then(sources => {
for (let i = 0; i < sources.length; ++i) { for (let i = 0; i < sources.length; ++i) {
if (sources[i].name == 'Electron') { if (sources[i].name === 'Electron') {
(navigator as any).webkitGetUserMedia({ (navigator as any).webkitGetUserMedia({
audio: false, audio: false,
video: { video: {
@ -96,18 +94,18 @@ desktopCapturer.getSources({ types: ['window', 'screen'] }).then(sources => {
maxHeight: 720 maxHeight: 720
} }
} }
}, gotStream, getUserMediaError) }, gotStream, getUserMediaError);
return return;
} }
} }
}) });
function gotStream (stream: any) { function gotStream (stream: any) {
(document.querySelector('video') as HTMLVideoElement).src = URL.createObjectURL(stream) (document.querySelector('video') as HTMLVideoElement).src = URL.createObjectURL(stream);
} }
function getUserMediaError (error: Error) { function getUserMediaError (error: Error) {
console.log('getUserMediaError', error) console.log('getUserMediaError', error);
} }
// File object // File object
@ -119,78 +117,81 @@ function getUserMediaError (error: Error) {
</div> </div>
*/ */
const holder = document.getElementById('holder') const holder = document.getElementById('holder');
holder.ondragover = function () { holder.ondragover = function () {
return false return false;
} };
holder.ondragleave = holder.ondragend = function () { holder.ondragleave = holder.ondragend = function () {
return false return false;
} };
holder.ondrop = function (e) { holder.ondrop = function (e) {
e.preventDefault() e.preventDefault();
const file = e.dataTransfer.files[0] const file = e.dataTransfer.files[0];
console.log('File you dragged here is', file.path) console.log('File you dragged here is', file.path);
return false return false;
} };
// nativeImage // nativeImage
// https://github.com/electron/electron/blob/main/docs/api/native-image.md // https://github.com/electron/electron/blob/main/docs/api/native-image.md
const image = clipboard.readImage() const image = clipboard.readImage();
console.log(image.getSize());
// https://github.com/electron/electron/blob/main/docs/api/process.md // https://github.com/electron/electron/blob/main/docs/api/process.md
// preload.js // preload.js
const _setImmediate = setImmediate const _setImmediate = setImmediate;
const _clearImmediate = clearImmediate const _clearImmediate = clearImmediate;
process.once('loaded', function () { process.once('loaded', function () {
global.setImmediate = _setImmediate global.setImmediate = _setImmediate;
global.clearImmediate = _clearImmediate global.clearImmediate = _clearImmediate;
}) });
// shell // shell
// https://github.com/electron/electron/blob/main/docs/api/shell.md // https://github.com/electron/electron/blob/main/docs/api/shell.md
shell.openExternal('https://github.com').then(() => {}) shell.openExternal('https://github.com').then(() => {});
// <webview> // <webview>
// https://github.com/electron/electron/blob/main/docs/api/webview-tag.md // https://github.com/electron/electron/blob/main/docs/api/webview-tag.md
const webview = document.createElement('webview') const webview = document.createElement('webview');
webview.loadURL('https://github.com') webview.loadURL('https://github.com');
webview.addEventListener('console-message', function (e) { webview.addEventListener('console-message', function (e) {
console.log('Guest page logged a message:', e.message) console.log('Guest page logged a message:', e.message);
}) });
webview.addEventListener('found-in-page', function (e) { webview.addEventListener('found-in-page', function (e) {
if (e.result.finalUpdate) { if (e.result.finalUpdate) {
webview.stopFindInPage('keepSelection') webview.stopFindInPage('keepSelection');
} }
}) });
const requestId = webview.findInPage('test') const requestId = webview.findInPage('test');
console.log(requestId);
webview.addEventListener('close', function () { webview.addEventListener('close', function () {
webview.src = 'about:blank' webview.src = 'about:blank';
}) });
// In embedder page. // In embedder page.
webview.addEventListener('ipc-message', function (event) { webview.addEventListener('ipc-message', function (event) {
console.log(event.channel) // Prints "pong" console.log(event.channel); // Prints "pong"
}) });
webview.send('ping') webview.send('ping');
webview.capturePage().then(image => { console.log(image) }) webview.capturePage().then(image => { console.log(image); });
{ const opened = webview.isDevToolsOpened();
const opened: boolean = webview.isDevToolsOpened() console.log('isDevToolsOpened', opened);
const focused: boolean = webview.isDevToolsFocused()
} const focused = webview.isDevToolsFocused();
console.log('isDevToolsFocused', focused);
// In guest page. // In guest page.
ipcRenderer.on('ping', function () { ipcRenderer.on('ping', function () {
ipcRenderer.sendToHost('pong') ipcRenderer.sendToHost('pong');
}) });

View file

@ -1,18 +1,18 @@
const path = require('path') const path = require('path');
const childProcess = require('child_process') const childProcess = require('child_process');
const typeCheck = () => { const typeCheck = () => {
const tscExec = path.resolve(require.resolve('typescript'), '../../bin/tsc') const tscExec = path.resolve(require.resolve('typescript'), '../../bin/tsc');
const tscChild = childProcess.spawn(process.execPath, [tscExec, '--project', './ts-smoke/tsconfig.json'], { const tscChild = childProcess.spawn(process.execPath, [tscExec, '--project', './ts-smoke/tsconfig.json'], {
cwd: path.resolve(__dirname, '../') cwd: path.resolve(__dirname, '../')
}) });
tscChild.stdout.on('data', d => console.log(d.toString())) tscChild.stdout.on('data', d => console.log(d.toString()));
tscChild.stderr.on('data', d => console.error(d.toString())) tscChild.stderr.on('data', d => console.error(d.toString()));
tscChild.on('exit', (tscStatus) => { tscChild.on('exit', (tscStatus) => {
if (tscStatus !== 0) { if (tscStatus !== 0) {
process.exit(tscStatus) process.exit(tscStatus);
} }
}) });
} };
typeCheck() typeCheck();