| // Expected DOM structure: |
| // Note: unrelated elements like script, \n text nodes are omitted. |
| // For originUrl: |
| // * denotes dom-snapshot-origin-url-3.js. |
| // ** denotes dom-snapshot-origin-url.html, aka document inlined javascript. |
| // *** denotes dom-snapshot-origin-url-1.js. |
| // **** denoates dom-snapshot-origin-url-2.js. |
| // <img***> |
| // <firstChild**> |
| // <testWrite <html**** <p<text>> <span*<p<text>>> <p*<text>>>> |
| // <testInnerText <'New content'*>> |
| // <testInnerHtml1 <'Hello'**>> |
| // <testInnerHtml2 <p* <span <'Inner World'>>>> |
| // <p* <span <'Outer World'>>> (used to be testOuterHtml) |
| (async function(testRunner) { |
| const {page, session, dp} = await testRunner.startBlank('Tests that DOMSnapshot.getSnapshot records origin url of dom nodes generated by script.'); |
| await dp.DOMSnapshot.enable(); |
| await page.navigate('../resources/dom-snapshot-origin-url.html'); |
| |
| function cleanupPaths(obj) { |
| for (const key of Object.keys(obj)) { |
| const value = obj[key]; |
| if (typeof value === 'string' && value.indexOf('file://') !== -1) |
| obj[key] = '<value>'; |
| else if (typeof value === 'object') |
| cleanupPaths(value); |
| } |
| return obj; |
| } |
| |
| const response = await dp.DOMSnapshot.getSnapshot({'computedStyleWhitelist': [], 'includeEventListeners': true}); |
| if (response.error) |
| testRunner.log(response); |
| else |
| testRunner.log(cleanupPaths(response.result), null, ['documentURL', 'baseURL', 'frameId', 'backendNodeId', 'layoutTreeNodes']); |
| testRunner.completeTest(); |
| }) |