Skip to content

Commit 5f9139f

Browse files
authored
Merge branch 'develop' into develop
2 parents c9c7188 + f4f21a3 commit 5f9139f

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

src/core/event/scroll.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,9 @@ export function scrollIntoView(path, id) {
147147
return;
148148
}
149149
const topMargin = config().topMargin;
150-
const section = dom.find('#' + id);
150+
// Use [id='1234'] instead of #id to handle special cases such as reserved characters and pure number id
151+
// https://stackoverflow.com/questions/37270787/uncaught-syntaxerror-failed-to-execute-queryselector-on-document
152+
const section = dom.find("[id='" + id + "']");
151153
section && scrollTo(section, topMargin);
152154

153155
const li = nav[getNavKey(path, id)];

test/unit/example.test.js

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import * as getTimeOfDayModule from './fixtures/get-time-of-day.js';
99

1010
// Suite
1111
// -----------------------------------------------------------------------------
12-
describe(`Example Tests`, function() {
12+
describe(`Example Tests`, function () {
1313
// Tests
1414
// ---------------------------------------------------------------------------
15-
describe('Jest & JSDOM basics', function() {
15+
describe('Jest & JSDOM basics', function () {
1616
test('dom manipulation (jsdom)', () => {
1717
const testText = 'This is a test';
1818
const testHTML = `<h1>Test</h1><p>${testText}</p>`;
@@ -53,7 +53,7 @@ describe(`Example Tests`, function() {
5353
});
5454
});
5555

56-
describe('Fake Timers', function() {
56+
describe('Fake Timers', function () {
5757
// jest version issue
5858
// test('data & time', () => {
5959
// jest.useFakeTimers();
@@ -63,7 +63,7 @@ describe(`Example Tests`, function() {
6363
// });
6464
});
6565

66-
describe('Mocks & Spies', function() {
66+
describe('Mocks & Spies', function () {
6767
test('mock import/require dependency using jest.fn()', () => {
6868
const testModule = require('./fixtures/get-time-of-day.js');
6969
const { greet: testGreet } = require('./fixtures/greet.js');
@@ -82,7 +82,7 @@ describe(`Example Tests`, function() {
8282

8383
jest.doMock(mockModulePath, () => ({
8484
__esModule: true,
85-
getTimeOfDay: jest.fn(() => 'night')
85+
getTimeOfDay: jest.fn(() => 'night'),
8686
}));
8787

8888
const mockGetTimeOfDay = require(mockModulePath).getTimeOfDay;
@@ -116,4 +116,19 @@ describe(`Example Tests`, function() {
116116
expect(greeting).toBe(`Good night, John!`);
117117
});
118118
});
119+
120+
describe('Verify Special Changes Test Case', function () {
121+
test('document.querySelector with id=pure number', () => {
122+
const testText = 'This is a test';
123+
const testHTML = `<div id=24><p>${testText}</p></div>`;
124+
125+
// Inject HTML
126+
document.body.innerHTML = testHTML;
127+
expect(() => {
128+
document.querySelector('#24');
129+
}).toThrow(DOMException);
130+
131+
expect(document.querySelector("[id='24']").textContent).toBe(testText);
132+
});
133+
});
119134
});

0 commit comments

Comments
 (0)