/
githubmr
/
facebook-react
Обзор
Документация
Войти
/
githubmr
/
facebook-react
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
packages/react-devtools-inline/__tests__/__e2e__/devtools-utils.js
108 строк
3 KB
Sebastian Markbåge
[DevTools] Show Owner Stacks in "rendered by" View (#34130)
11 авг 2025, 18:41
Не верифицирован
11 авг 2025, 18:41
7a934a1
Код
Авторство
О чём код?
'use strict'; /** @flow */ async function clickButton(page, buttonTestName) { await page.evaluate(testName => { const {createTestNameSelector, findAllNodes} = window.REACT_DOM_DEVTOOLS; const container = document.getElementById('devtools'); const button = findAllNodes(container, [ createTestNameSelector(testName), ])[0]; button.click(); }, buttonTestName); } async function getElementCount(page, displayName) { return await page.evaluate(listItemText => { const {createTestNameSelector, createTextSelector, findAllNodes} = window.REACT_DOM_DEVTOOLS; const container = document.getElementById('devtools'); const rows = findAllNodes(container, [ createTestNameSelector('ComponentTreeListItem'), createTextSelector(listItemText), ]); return rows.length; }, displayName); } async function selectElement( page, displayName, waitForOwnersText, waitForSourceLoaded = false ) { await page.evaluate(listItemText => { const {createTestNameSelector, createTextSelector, findAllNodes} = window.REACT_DOM_DEVTOOLS; const container = document.getElementById('devtools'); const listItem = findAllNodes(container, [ createTestNameSelector('ComponentTreeListItem'), createTextSelector(listItemText), ])[0]; listItem.dispatchEvent( new MouseEvent('mousedown', {bubbles: true, cancelable: true}) ); }, displayName); if (waitForOwnersText) { // Wait for selected element's props to load. await page.waitForFunction( ({titleText, ownersListText}) => { const {createTestNameSelector, findAllNodes} = window.REACT_DOM_DEVTOOLS; const container = document.getElementById('devtools'); const title = findAllNodes(container, [ createTestNameSelector('InspectedElement-Title'), ])[0]; const ownersList = findAllNodes(container, [ createTestNameSelector('InspectedElementView-Owners'), ])[0]; if (!ownersList) { return false; } const owners = findAllNodes(ownersList, [ createTestNameSelector('OwnerView'), ]); return ( title && title.innerText.includes(titleText) && owners && owners .map(node => node.innerText) .join('\n') .includes(ownersListText) ); }, {titleText: displayName, ownersListText: waitForOwnersText} ); } if (waitForSourceLoaded) { await page.waitForFunction(() => { const {createTestNameSelector, findAllNodes} = window.REACT_DOM_DEVTOOLS; const container = document.getElementById('devtools'); const sourceStringBlock = findAllNodes(container, [ createTestNameSelector('InspectedElementView-FormattedSourceString'), ])[0]; // Wait for a new source line to be fetched return sourceStringBlock != null && sourceStringBlock.innerText != null; }); } } module.exports = { clickButton, getElementCount, selectElement, };