mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-07 12:18:39 +00:00
chore(screenshotter): Improve screenshotter for Safari (#3015)
* Fix when Docker returns IPv4 and IPv6 addresses * Ensure images load before screenshotting * Fix bugs from review * Update test/screenshotter/test.html Co-authored-by: ylemkimon <y@ylem.kim>
This commit is contained in:
@@ -172,7 +172,8 @@ if (!seleniumURL && opts.container) {
|
|||||||
guessDockerIPs();
|
guessDockerIPs();
|
||||||
}
|
}
|
||||||
seleniumPort = cmd("docker", "port", opts.container, seleniumPort);
|
seleniumPort = cmd("docker", "port", opts.container, seleniumPort);
|
||||||
seleniumPort = seleniumPort.replace(/^.*:/, "");
|
// Docker can output two lines, such as "0.0.0.0:49156\n:::49156"
|
||||||
|
seleniumPort = seleniumPort.replace(/[^]*:([0-9]+)[^]*/, "$1");
|
||||||
}
|
}
|
||||||
if (!seleniumURL && seleniumIP) {
|
if (!seleniumURL && seleniumIP) {
|
||||||
seleniumURL = "http://" + seleniumIP + ":" + seleniumPort + "/wd/hub";
|
seleniumURL = "http://" + seleniumIP + ":" + seleniumPort + "/wd/hub";
|
||||||
@@ -493,7 +494,7 @@ function takeScreenshot(key) {
|
|||||||
function loadFonts() {
|
function loadFonts() {
|
||||||
driver.executeAsyncScript(
|
driver.executeAsyncScript(
|
||||||
"var callback = arguments[arguments.length - 1]; " +
|
"var callback = arguments[arguments.length - 1]; " +
|
||||||
"load_fonts(callback);")
|
"load_fonts_and_images(callback);")
|
||||||
.then(waitThenScreenshot);
|
.then(waitThenScreenshot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -31,14 +31,16 @@
|
|||||||
<span id="math"></span>
|
<span id="math"></span>
|
||||||
<span id="post"></span>
|
<span id="post"></span>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function load_fonts(callback) {
|
function load_fonts_and_images(callback) {
|
||||||
if (!document.fonts || !document.fonts.load) {
|
if (typeof Promise === "undefined") {
|
||||||
callback();
|
callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var results = [];
|
var results = [];
|
||||||
|
|
||||||
function load_font(name, style) {
|
function load_font(name, style) {
|
||||||
|
if (!document.fonts || !document.fonts.load) return;
|
||||||
// 10px is arbitrarily selected value
|
// 10px is arbitrarily selected value
|
||||||
results.push(document.fonts.load((style || "") + " 10px " + name));
|
results.push(document.fonts.load((style || "") + " 10px " + name));
|
||||||
}
|
}
|
||||||
@@ -56,6 +58,18 @@
|
|||||||
load_font("Mincho");
|
load_font("Mincho");
|
||||||
load_font("Batang");
|
load_font("Batang");
|
||||||
|
|
||||||
|
for (var i = 0; i < document.images.length; i++) {
|
||||||
|
var img = document.images[i];
|
||||||
|
results.push(new Promise(function (done, error) {
|
||||||
|
if (img.complete) {
|
||||||
|
done();
|
||||||
|
} else {
|
||||||
|
img.addEventListener('load', done);
|
||||||
|
img.addEventListener('error', error);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
Promise.all(results).then(callback)
|
Promise.all(results).then(callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user