Skip to content

Commit 99057f3

Browse files
committed
Fix loading of external images (with canvas package installed)
Regressed in 37532c7 (v9.2.1). Fixes #1536.
1 parent 8ac615f commit 99057f3

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

lib/jsdom/living/nodes/HTMLImageElement-impl.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class HTMLImageElementImpl extends HTMLElementImpl {
2020
};
2121
}
2222
this._currentSrc = null;
23-
resourceLoader.load(this, value, {}, (data, url, response) => {
23+
resourceLoader.load(this, this.src, {}, (data, url, response) => {
2424
if (response && response.statusCode !== undefined && response.statusCode !== 200) {
2525
throw new Error("Status code: " + response.statusCode);
2626
}

test/living-html/htmlimageelement.js

+34
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"use strict";
22
const fs = require("fs");
33
const path = require("path");
4+
const http = require("http");
45
const jsdom = require("../..");
56
const isCanvasInstalled = require("../util").isCanvasInstalled;
67
const toFileUrl = require("../util").toFileUrl(__dirname);
@@ -46,6 +47,39 @@ exports["loading image from valid external URL"] = t => {
4647
};
4748
};
4849

50+
exports["loading images should work with relative URLs (GH-1536)"] = t => {
51+
if (!isCanvasInstalled(t)) {
52+
return;
53+
}
54+
55+
let requestsSoFar = 0;
56+
57+
const server = http.createServer((request, response) => {
58+
if (requestsSoFar === 0) {
59+
t.strictEqual(request.url, "/test.html");
60+
response.end(`<img src="/test.jpg">`);
61+
} else {
62+
t.strictEqual(request.url, "/test.jpg");
63+
response.end(``);
64+
server.close();
65+
t.done();
66+
}
67+
68+
++requestsSoFar;
69+
})
70+
.listen();
71+
72+
jsdom.env({
73+
url: `http://127.0.0.1:${server.address().port}/test.html`,
74+
features: {
75+
FetchExternalResources: ["img"]
76+
},
77+
done(err) {
78+
t.ifError(err);
79+
}
80+
});
81+
};
82+
4983
exports["loading image from data URL"] = t => {
5084
if (!isCanvasInstalled(t)) {
5185
return;

0 commit comments

Comments
 (0)