Best JavaScript code snippet using playwright-internal
25935eReactDebugTool.js
Source:25935eReactDebugTool.js
...55 };56 return tree;57 }, {});58 };59 var resetMeasurements = function resetMeasurements() {60 var previousStartTime = currentFlushStartTime;61 var previousMeasurements = currentFlushMeasurements;62 var previousOperations = ReactHostOperationHistoryHook.getHistory();63 if (currentFlushNesting === 0) {64 currentFlushStartTime = 0;65 currentFlushMeasurements = [];66 clearHistory();67 return;68 }69 if (previousMeasurements.length || previousOperations.length) {70 var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();71 flushHistory.push({72 duration: performanceNow() - previousStartTime,73 measurements: previousMeasurements || [],74 operations: previousOperations || [],75 treeSnapshot: getTreeSnapshot(registeredIDs)76 });77 }78 clearHistory();79 currentFlushStartTime = performanceNow();80 currentFlushMeasurements = [];81 };82 var checkDebugID = function checkDebugID(debugID) {83 var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;84 if (allowRoot && debugID === 0) {85 return;86 }87 if (!debugID) {88 warning(false, 'ReactDebugTool: debugID may not be empty.');89 }90 };91 var beginLifeCycleTimer = function beginLifeCycleTimer(debugID, timerType) {92 if (currentFlushNesting === 0) {93 return;94 }95 if (currentTimerType && !lifeCycleTimerHasWarned) {96 warning(false, 'There is an internal error in the React performance measurement code.' + '\n\nDid not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another');97 lifeCycleTimerHasWarned = true;98 }99 currentTimerStartTime = performanceNow();100 currentTimerNestedFlushDuration = 0;101 currentTimerDebugID = debugID;102 currentTimerType = timerType;103 };104 var endLifeCycleTimer = function endLifeCycleTimer(debugID, timerType) {105 if (currentFlushNesting === 0) {106 return;107 }108 if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) {109 warning(false, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another');110 lifeCycleTimerHasWarned = true;111 }112 if (_isProfiling) {113 currentFlushMeasurements.push({114 timerType: timerType,115 instanceID: debugID,116 duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration117 });118 }119 currentTimerStartTime = 0;120 currentTimerNestedFlushDuration = 0;121 currentTimerDebugID = null;122 currentTimerType = null;123 };124 var pauseCurrentLifeCycleTimer = function pauseCurrentLifeCycleTimer() {125 var currentTimer = {126 startTime: currentTimerStartTime,127 nestedFlushStartTime: performanceNow(),128 debugID: currentTimerDebugID,129 timerType: currentTimerType130 };131 lifeCycleTimerStack.push(currentTimer);132 currentTimerStartTime = 0;133 currentTimerNestedFlushDuration = 0;134 currentTimerDebugID = null;135 currentTimerType = null;136 };137 var resumeCurrentLifeCycleTimer = function resumeCurrentLifeCycleTimer() {138 var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(),139 startTime = _lifeCycleTimerStack$.startTime,140 nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime,141 debugID = _lifeCycleTimerStack$.debugID,142 timerType = _lifeCycleTimerStack$.timerType;143 var nestedFlushDuration = performanceNow() - nestedFlushStartTime;144 currentTimerStartTime = startTime;145 currentTimerNestedFlushDuration += nestedFlushDuration;146 currentTimerDebugID = debugID;147 currentTimerType = timerType;148 };149 var lastMarkTimeStamp = 0;150 var canUsePerformanceMeasure = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function';151 var shouldMark = function shouldMark(debugID) {152 if (!_isProfiling || !canUsePerformanceMeasure) {153 return false;154 }155 var element = ReactComponentTreeHook.getElement(debugID);156 if (element == null || typeof element !== 'object') {157 return false;158 }159 var isHostElement = typeof element.type === 'string';160 if (isHostElement) {161 return false;162 }163 return true;164 };165 var markBegin = function markBegin(debugID, markType) {166 if (!shouldMark(debugID)) {167 return;168 }169 var markName = debugID + '::' + markType;170 lastMarkTimeStamp = performanceNow();171 performance.mark(markName);172 };173 var markEnd = function markEnd(debugID, markType) {174 if (!shouldMark(debugID)) {175 return;176 }177 var markName = debugID + '::' + markType;178 var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown';179 var timeStamp = performanceNow();180 if (timeStamp - lastMarkTimeStamp > 0.1) {181 var measurementName = displayName + ' [' + markType + ']';182 performance.measure(measurementName, markName);183 }184 performance.clearMarks(markName);185 performance.clearMeasures(measurementName);186 };187 ReactDebugTool = {188 addHook: function addHook(hook) {189 hooks.push(hook);190 },191 removeHook: function removeHook(hook) {192 for (var i = 0; i < hooks.length; i++) {193 if (hooks[i] === hook) {194 hooks.splice(i, 1);195 i--;196 }197 }198 },199 isProfiling: function isProfiling() {200 return _isProfiling;201 },202 beginProfiling: function beginProfiling() {203 if (_isProfiling) {204 return;205 }206 _isProfiling = true;207 flushHistory.length = 0;208 resetMeasurements();209 ReactDebugTool.addHook(ReactHostOperationHistoryHook);210 },211 endProfiling: function endProfiling() {212 if (!_isProfiling) {213 return;214 }215 _isProfiling = false;216 resetMeasurements();217 ReactDebugTool.removeHook(ReactHostOperationHistoryHook);218 },219 getFlushHistory: function getFlushHistory() {220 return flushHistory;221 },222 onBeginFlush: function onBeginFlush() {223 currentFlushNesting++;224 resetMeasurements();225 pauseCurrentLifeCycleTimer();226 emitEvent('onBeginFlush');227 },228 onEndFlush: function onEndFlush() {229 resetMeasurements();230 currentFlushNesting--;231 resumeCurrentLifeCycleTimer();232 emitEvent('onEndFlush');233 },234 onBeginLifeCycleTimer: function onBeginLifeCycleTimer(debugID, timerType) {235 checkDebugID(debugID);236 emitEvent('onBeginLifeCycleTimer', debugID, timerType);237 markBegin(debugID, timerType);238 beginLifeCycleTimer(debugID, timerType);239 },240 onEndLifeCycleTimer: function onEndLifeCycleTimer(debugID, timerType) {241 checkDebugID(debugID);242 endLifeCycleTimer(debugID, timerType);243 markEnd(debugID, timerType);...
65b6bd2ffbe6e4c46a631afcc31212818c6d58ReactDebugTool.js
Source:65b6bd2ffbe6e4c46a631afcc31212818c6d58ReactDebugTool.js
...55 };56 return tree;57 }, {});58 };59 var resetMeasurements = function resetMeasurements() {60 var previousStartTime = currentFlushStartTime;61 var previousMeasurements = currentFlushMeasurements;62 var previousOperations = ReactHostOperationHistoryHook.getHistory();63 if (currentFlushNesting === 0) {64 currentFlushStartTime = 0;65 currentFlushMeasurements = [];66 clearHistory();67 return;68 }69 if (previousMeasurements.length || previousOperations.length) {70 var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();71 flushHistory.push({72 duration: performanceNow() - previousStartTime,73 measurements: previousMeasurements || [],74 operations: previousOperations || [],75 treeSnapshot: getTreeSnapshot(registeredIDs)76 });77 }78 clearHistory();79 currentFlushStartTime = performanceNow();80 currentFlushMeasurements = [];81 };82 var checkDebugID = function checkDebugID(debugID) {83 var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;84 if (allowRoot && debugID === 0) {85 return;86 }87 if (!debugID) {88 warning(false, 'ReactDebugTool: debugID may not be empty.');89 }90 };91 var beginLifeCycleTimer = function beginLifeCycleTimer(debugID, timerType) {92 if (currentFlushNesting === 0) {93 return;94 }95 if (currentTimerType && !lifeCycleTimerHasWarned) {96 warning(false, 'There is an internal error in the React performance measurement code.' + '\n\nDid not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another');97 lifeCycleTimerHasWarned = true;98 }99 currentTimerStartTime = performanceNow();100 currentTimerNestedFlushDuration = 0;101 currentTimerDebugID = debugID;102 currentTimerType = timerType;103 };104 var endLifeCycleTimer = function endLifeCycleTimer(debugID, timerType) {105 if (currentFlushNesting === 0) {106 return;107 }108 if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) {109 warning(false, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another');110 lifeCycleTimerHasWarned = true;111 }112 if (_isProfiling) {113 currentFlushMeasurements.push({114 timerType: timerType,115 instanceID: debugID,116 duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration117 });118 }119 currentTimerStartTime = 0;120 currentTimerNestedFlushDuration = 0;121 currentTimerDebugID = null;122 currentTimerType = null;123 };124 var pauseCurrentLifeCycleTimer = function pauseCurrentLifeCycleTimer() {125 var currentTimer = {126 startTime: currentTimerStartTime,127 nestedFlushStartTime: performanceNow(),128 debugID: currentTimerDebugID,129 timerType: currentTimerType130 };131 lifeCycleTimerStack.push(currentTimer);132 currentTimerStartTime = 0;133 currentTimerNestedFlushDuration = 0;134 currentTimerDebugID = null;135 currentTimerType = null;136 };137 var resumeCurrentLifeCycleTimer = function resumeCurrentLifeCycleTimer() {138 var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(),139 startTime = _lifeCycleTimerStack$.startTime,140 nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime,141 debugID = _lifeCycleTimerStack$.debugID,142 timerType = _lifeCycleTimerStack$.timerType;143 var nestedFlushDuration = performanceNow() - nestedFlushStartTime;144 currentTimerStartTime = startTime;145 currentTimerNestedFlushDuration += nestedFlushDuration;146 currentTimerDebugID = debugID;147 currentTimerType = timerType;148 };149 var lastMarkTimeStamp = 0;150 var canUsePerformanceMeasure = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function';151 var shouldMark = function shouldMark(debugID) {152 if (!_isProfiling || !canUsePerformanceMeasure) {153 return false;154 }155 var element = ReactComponentTreeHook.getElement(debugID);156 if (element == null || typeof element !== 'object') {157 return false;158 }159 var isHostElement = typeof element.type === 'string';160 if (isHostElement) {161 return false;162 }163 return true;164 };165 var markBegin = function markBegin(debugID, markType) {166 if (!shouldMark(debugID)) {167 return;168 }169 var markName = debugID + '::' + markType;170 lastMarkTimeStamp = performanceNow();171 performance.mark(markName);172 };173 var markEnd = function markEnd(debugID, markType) {174 if (!shouldMark(debugID)) {175 return;176 }177 var markName = debugID + '::' + markType;178 var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown';179 var timeStamp = performanceNow();180 if (timeStamp - lastMarkTimeStamp > 0.1) {181 var measurementName = displayName + ' [' + markType + ']';182 performance.measure(measurementName, markName);183 }184 performance.clearMarks(markName);185 performance.clearMeasures(measurementName);186 };187 ReactDebugTool = {188 addHook: function addHook(hook) {189 hooks.push(hook);190 },191 removeHook: function removeHook(hook) {192 for (var i = 0; i < hooks.length; i++) {193 if (hooks[i] === hook) {194 hooks.splice(i, 1);195 i--;196 }197 }198 },199 isProfiling: function isProfiling() {200 return _isProfiling;201 },202 beginProfiling: function beginProfiling() {203 if (_isProfiling) {204 return;205 }206 _isProfiling = true;207 flushHistory.length = 0;208 resetMeasurements();209 ReactDebugTool.addHook(ReactHostOperationHistoryHook);210 },211 endProfiling: function endProfiling() {212 if (!_isProfiling) {213 return;214 }215 _isProfiling = false;216 resetMeasurements();217 ReactDebugTool.removeHook(ReactHostOperationHistoryHook);218 },219 getFlushHistory: function getFlushHistory() {220 return flushHistory;221 },222 onBeginFlush: function onBeginFlush() {223 currentFlushNesting++;224 resetMeasurements();225 pauseCurrentLifeCycleTimer();226 emitEvent('onBeginFlush');227 },228 onEndFlush: function onEndFlush() {229 resetMeasurements();230 currentFlushNesting--;231 resumeCurrentLifeCycleTimer();232 emitEvent('onEndFlush');233 },234 onBeginLifeCycleTimer: function onBeginLifeCycleTimer(debugID, timerType) {235 checkDebugID(debugID);236 emitEvent('onBeginLifeCycleTimer', debugID, timerType);237 markBegin(debugID, timerType);238 beginLifeCycleTimer(debugID, timerType);239 },240 onEndLifeCycleTimer: function onEndLifeCycleTimer(debugID, timerType) {241 checkDebugID(debugID);242 endLifeCycleTimer(debugID, timerType);243 markEnd(debugID, timerType);...
3f3d169c01bb7217eb190766a7508b5a38052fReactDebugTool.js
Source:3f3d169c01bb7217eb190766a7508b5a38052fReactDebugTool.js
...55 };56 return tree;57 }, {});58 };59 var resetMeasurements = function resetMeasurements() {60 var previousStartTime = currentFlushStartTime;61 var previousMeasurements = currentFlushMeasurements;62 var previousOperations = ReactHostOperationHistoryHook.getHistory();63 if (currentFlushNesting === 0) {64 currentFlushStartTime = 0;65 currentFlushMeasurements = [];66 clearHistory();67 return;68 }69 if (previousMeasurements.length || previousOperations.length) {70 var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();71 flushHistory.push({72 duration: performanceNow() - previousStartTime,73 measurements: previousMeasurements || [],74 operations: previousOperations || [],75 treeSnapshot: getTreeSnapshot(registeredIDs)76 });77 }78 clearHistory();79 currentFlushStartTime = performanceNow();80 currentFlushMeasurements = [];81 };82 var checkDebugID = function checkDebugID(debugID) {83 var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;84 if (allowRoot && debugID === 0) {85 return;86 }87 if (!debugID) {88 warning(false, 'ReactDebugTool: debugID may not be empty.');89 }90 };91 var beginLifeCycleTimer = function beginLifeCycleTimer(debugID, timerType) {92 if (currentFlushNesting === 0) {93 return;94 }95 if (currentTimerType && !lifeCycleTimerHasWarned) {96 warning(false, 'There is an internal error in the React performance measurement code.' + '\n\nDid not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another');97 lifeCycleTimerHasWarned = true;98 }99 currentTimerStartTime = performanceNow();100 currentTimerNestedFlushDuration = 0;101 currentTimerDebugID = debugID;102 currentTimerType = timerType;103 };104 var endLifeCycleTimer = function endLifeCycleTimer(debugID, timerType) {105 if (currentFlushNesting === 0) {106 return;107 }108 if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) {109 warning(false, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another');110 lifeCycleTimerHasWarned = true;111 }112 if (_isProfiling) {113 currentFlushMeasurements.push({114 timerType: timerType,115 instanceID: debugID,116 duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration117 });118 }119 currentTimerStartTime = 0;120 currentTimerNestedFlushDuration = 0;121 currentTimerDebugID = null;122 currentTimerType = null;123 };124 var pauseCurrentLifeCycleTimer = function pauseCurrentLifeCycleTimer() {125 var currentTimer = {126 startTime: currentTimerStartTime,127 nestedFlushStartTime: performanceNow(),128 debugID: currentTimerDebugID,129 timerType: currentTimerType130 };131 lifeCycleTimerStack.push(currentTimer);132 currentTimerStartTime = 0;133 currentTimerNestedFlushDuration = 0;134 currentTimerDebugID = null;135 currentTimerType = null;136 };137 var resumeCurrentLifeCycleTimer = function resumeCurrentLifeCycleTimer() {138 var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(),139 startTime = _lifeCycleTimerStack$.startTime,140 nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime,141 debugID = _lifeCycleTimerStack$.debugID,142 timerType = _lifeCycleTimerStack$.timerType;143 var nestedFlushDuration = performanceNow() - nestedFlushStartTime;144 currentTimerStartTime = startTime;145 currentTimerNestedFlushDuration += nestedFlushDuration;146 currentTimerDebugID = debugID;147 currentTimerType = timerType;148 };149 var lastMarkTimeStamp = 0;150 var canUsePerformanceMeasure = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function';151 var shouldMark = function shouldMark(debugID) {152 if (!_isProfiling || !canUsePerformanceMeasure) {153 return false;154 }155 var element = ReactComponentTreeHook.getElement(debugID);156 if (element == null || typeof element !== 'object') {157 return false;158 }159 var isHostElement = typeof element.type === 'string';160 if (isHostElement) {161 return false;162 }163 return true;164 };165 var markBegin = function markBegin(debugID, markType) {166 if (!shouldMark(debugID)) {167 return;168 }169 var markName = debugID + '::' + markType;170 lastMarkTimeStamp = performanceNow();171 performance.mark(markName);172 };173 var markEnd = function markEnd(debugID, markType) {174 if (!shouldMark(debugID)) {175 return;176 }177 var markName = debugID + '::' + markType;178 var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown';179 var timeStamp = performanceNow();180 if (timeStamp - lastMarkTimeStamp > 0.1) {181 var measurementName = displayName + ' [' + markType + ']';182 performance.measure(measurementName, markName);183 }184 performance.clearMarks(markName);185 performance.clearMeasures(measurementName);186 };187 ReactDebugTool = {188 addHook: function addHook(hook) {189 hooks.push(hook);190 },191 removeHook: function removeHook(hook) {192 for (var i = 0; i < hooks.length; i++) {193 if (hooks[i] === hook) {194 hooks.splice(i, 1);195 i--;196 }197 }198 },199 isProfiling: function isProfiling() {200 return _isProfiling;201 },202 beginProfiling: function beginProfiling() {203 if (_isProfiling) {204 return;205 }206 _isProfiling = true;207 flushHistory.length = 0;208 resetMeasurements();209 ReactDebugTool.addHook(ReactHostOperationHistoryHook);210 },211 endProfiling: function endProfiling() {212 if (!_isProfiling) {213 return;214 }215 _isProfiling = false;216 resetMeasurements();217 ReactDebugTool.removeHook(ReactHostOperationHistoryHook);218 },219 getFlushHistory: function getFlushHistory() {220 return flushHistory;221 },222 onBeginFlush: function onBeginFlush() {223 currentFlushNesting++;224 resetMeasurements();225 pauseCurrentLifeCycleTimer();226 emitEvent('onBeginFlush');227 },228 onEndFlush: function onEndFlush() {229 resetMeasurements();230 currentFlushNesting--;231 resumeCurrentLifeCycleTimer();232 emitEvent('onEndFlush');233 },234 onBeginLifeCycleTimer: function onBeginLifeCycleTimer(debugID, timerType) {235 checkDebugID(debugID);236 emitEvent('onBeginLifeCycleTimer', debugID, timerType);237 markBegin(debugID, timerType);238 beginLifeCycleTimer(debugID, timerType);239 },240 onEndLifeCycleTimer: function onEndLifeCycleTimer(debugID, timerType) {241 checkDebugID(debugID);242 endLifeCycleTimer(debugID, timerType);243 markEnd(debugID, timerType);...
386084ReactDebugTool.js
Source:386084ReactDebugTool.js
...55 };56 return tree;57 }, {});58 };59 var resetMeasurements = function resetMeasurements() {60 var previousStartTime = currentFlushStartTime;61 var previousMeasurements = currentFlushMeasurements;62 var previousOperations = ReactHostOperationHistoryHook.getHistory();63 if (currentFlushNesting === 0) {64 currentFlushStartTime = 0;65 currentFlushMeasurements = [];66 clearHistory();67 return;68 }69 if (previousMeasurements.length || previousOperations.length) {70 var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();71 flushHistory.push({72 duration: performanceNow() - previousStartTime,73 measurements: previousMeasurements || [],74 operations: previousOperations || [],75 treeSnapshot: getTreeSnapshot(registeredIDs)76 });77 }78 clearHistory();79 currentFlushStartTime = performanceNow();80 currentFlushMeasurements = [];81 };82 var checkDebugID = function checkDebugID(debugID) {83 var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;84 if (allowRoot && debugID === 0) {85 return;86 }87 if (!debugID) {88 warning(false, 'ReactDebugTool: debugID may not be empty.');89 }90 };91 var beginLifeCycleTimer = function beginLifeCycleTimer(debugID, timerType) {92 if (currentFlushNesting === 0) {93 return;94 }95 if (currentTimerType && !lifeCycleTimerHasWarned) {96 warning(false, 'There is an internal error in the React performance measurement code.' + '\n\nDid not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another');97 lifeCycleTimerHasWarned = true;98 }99 currentTimerStartTime = performanceNow();100 currentTimerNestedFlushDuration = 0;101 currentTimerDebugID = debugID;102 currentTimerType = timerType;103 };104 var endLifeCycleTimer = function endLifeCycleTimer(debugID, timerType) {105 if (currentFlushNesting === 0) {106 return;107 }108 if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) {109 warning(false, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another');110 lifeCycleTimerHasWarned = true;111 }112 if (_isProfiling) {113 currentFlushMeasurements.push({114 timerType: timerType,115 instanceID: debugID,116 duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration117 });118 }119 currentTimerStartTime = 0;120 currentTimerNestedFlushDuration = 0;121 currentTimerDebugID = null;122 currentTimerType = null;123 };124 var pauseCurrentLifeCycleTimer = function pauseCurrentLifeCycleTimer() {125 var currentTimer = {126 startTime: currentTimerStartTime,127 nestedFlushStartTime: performanceNow(),128 debugID: currentTimerDebugID,129 timerType: currentTimerType130 };131 lifeCycleTimerStack.push(currentTimer);132 currentTimerStartTime = 0;133 currentTimerNestedFlushDuration = 0;134 currentTimerDebugID = null;135 currentTimerType = null;136 };137 var resumeCurrentLifeCycleTimer = function resumeCurrentLifeCycleTimer() {138 var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(),139 startTime = _lifeCycleTimerStack$.startTime,140 nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime,141 debugID = _lifeCycleTimerStack$.debugID,142 timerType = _lifeCycleTimerStack$.timerType;143 var nestedFlushDuration = performanceNow() - nestedFlushStartTime;144 currentTimerStartTime = startTime;145 currentTimerNestedFlushDuration += nestedFlushDuration;146 currentTimerDebugID = debugID;147 currentTimerType = timerType;148 };149 var lastMarkTimeStamp = 0;150 var canUsePerformanceMeasure = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function';151 var shouldMark = function shouldMark(debugID) {152 if (!_isProfiling || !canUsePerformanceMeasure) {153 return false;154 }155 var element = ReactComponentTreeHook.getElement(debugID);156 if (element == null || typeof element !== 'object') {157 return false;158 }159 var isHostElement = typeof element.type === 'string';160 if (isHostElement) {161 return false;162 }163 return true;164 };165 var markBegin = function markBegin(debugID, markType) {166 if (!shouldMark(debugID)) {167 return;168 }169 var markName = debugID + '::' + markType;170 lastMarkTimeStamp = performanceNow();171 performance.mark(markName);172 };173 var markEnd = function markEnd(debugID, markType) {174 if (!shouldMark(debugID)) {175 return;176 }177 var markName = debugID + '::' + markType;178 var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown';179 var timeStamp = performanceNow();180 if (timeStamp - lastMarkTimeStamp > 0.1) {181 var measurementName = displayName + ' [' + markType + ']';182 performance.measure(measurementName, markName);183 }184 performance.clearMarks(markName);185 performance.clearMeasures(measurementName);186 };187 ReactDebugTool = {188 addHook: function addHook(hook) {189 hooks.push(hook);190 },191 removeHook: function removeHook(hook) {192 for (var i = 0; i < hooks.length; i++) {193 if (hooks[i] === hook) {194 hooks.splice(i, 1);195 i--;196 }197 }198 },199 isProfiling: function isProfiling() {200 return _isProfiling;201 },202 beginProfiling: function beginProfiling() {203 if (_isProfiling) {204 return;205 }206 _isProfiling = true;207 flushHistory.length = 0;208 resetMeasurements();209 ReactDebugTool.addHook(ReactHostOperationHistoryHook);210 },211 endProfiling: function endProfiling() {212 if (!_isProfiling) {213 return;214 }215 _isProfiling = false;216 resetMeasurements();217 ReactDebugTool.removeHook(ReactHostOperationHistoryHook);218 },219 getFlushHistory: function getFlushHistory() {220 return flushHistory;221 },222 onBeginFlush: function onBeginFlush() {223 currentFlushNesting++;224 resetMeasurements();225 pauseCurrentLifeCycleTimer();226 emitEvent('onBeginFlush');227 },228 onEndFlush: function onEndFlush() {229 resetMeasurements();230 currentFlushNesting--;231 resumeCurrentLifeCycleTimer();232 emitEvent('onEndFlush');233 },234 onBeginLifeCycleTimer: function onBeginLifeCycleTimer(debugID, timerType) {235 checkDebugID(debugID);236 emitEvent('onBeginLifeCycleTimer', debugID, timerType);237 markBegin(debugID, timerType);238 beginLifeCycleTimer(debugID, timerType);239 },240 onEndLifeCycleTimer: function onEndLifeCycleTimer(debugID, timerType) {241 checkDebugID(debugID);242 endLifeCycleTimer(debugID, timerType);243 markEnd(debugID, timerType);...
609127ReactDebugTool.js
Source:609127ReactDebugTool.js
...55 };56 return tree;57 }, {});58 };59 var resetMeasurements = function resetMeasurements() {60 var previousStartTime = currentFlushStartTime;61 var previousMeasurements = currentFlushMeasurements;62 var previousOperations = ReactHostOperationHistoryHook.getHistory();63 if (currentFlushNesting === 0) {64 currentFlushStartTime = 0;65 currentFlushMeasurements = [];66 clearHistory();67 return;68 }69 if (previousMeasurements.length || previousOperations.length) {70 var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();71 flushHistory.push({72 duration: performanceNow() - previousStartTime,73 measurements: previousMeasurements || [],74 operations: previousOperations || [],75 treeSnapshot: getTreeSnapshot(registeredIDs)76 });77 }78 clearHistory();79 currentFlushStartTime = performanceNow();80 currentFlushMeasurements = [];81 };82 var checkDebugID = function checkDebugID(debugID) {83 var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;84 if (allowRoot && debugID === 0) {85 return;86 }87 if (!debugID) {88 warning(false, 'ReactDebugTool: debugID may not be empty.');89 }90 };91 var beginLifeCycleTimer = function beginLifeCycleTimer(debugID, timerType) {92 if (currentFlushNesting === 0) {93 return;94 }95 if (currentTimerType && !lifeCycleTimerHasWarned) {96 warning(false, 'There is an internal error in the React performance measurement code.' + '\n\nDid not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another');97 lifeCycleTimerHasWarned = true;98 }99 currentTimerStartTime = performanceNow();100 currentTimerNestedFlushDuration = 0;101 currentTimerDebugID = debugID;102 currentTimerType = timerType;103 };104 var endLifeCycleTimer = function endLifeCycleTimer(debugID, timerType) {105 if (currentFlushNesting === 0) {106 return;107 }108 if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) {109 warning(false, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another');110 lifeCycleTimerHasWarned = true;111 }112 if (_isProfiling) {113 currentFlushMeasurements.push({114 timerType: timerType,115 instanceID: debugID,116 duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration117 });118 }119 currentTimerStartTime = 0;120 currentTimerNestedFlushDuration = 0;121 currentTimerDebugID = null;122 currentTimerType = null;123 };124 var pauseCurrentLifeCycleTimer = function pauseCurrentLifeCycleTimer() {125 var currentTimer = {126 startTime: currentTimerStartTime,127 nestedFlushStartTime: performanceNow(),128 debugID: currentTimerDebugID,129 timerType: currentTimerType130 };131 lifeCycleTimerStack.push(currentTimer);132 currentTimerStartTime = 0;133 currentTimerNestedFlushDuration = 0;134 currentTimerDebugID = null;135 currentTimerType = null;136 };137 var resumeCurrentLifeCycleTimer = function resumeCurrentLifeCycleTimer() {138 var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(),139 startTime = _lifeCycleTimerStack$.startTime,140 nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime,141 debugID = _lifeCycleTimerStack$.debugID,142 timerType = _lifeCycleTimerStack$.timerType;143 var nestedFlushDuration = performanceNow() - nestedFlushStartTime;144 currentTimerStartTime = startTime;145 currentTimerNestedFlushDuration += nestedFlushDuration;146 currentTimerDebugID = debugID;147 currentTimerType = timerType;148 };149 var lastMarkTimeStamp = 0;150 var canUsePerformanceMeasure = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function';151 var shouldMark = function shouldMark(debugID) {152 if (!_isProfiling || !canUsePerformanceMeasure) {153 return false;154 }155 var element = ReactComponentTreeHook.getElement(debugID);156 if (element == null || typeof element !== 'object') {157 return false;158 }159 var isHostElement = typeof element.type === 'string';160 if (isHostElement) {161 return false;162 }163 return true;164 };165 var markBegin = function markBegin(debugID, markType) {166 if (!shouldMark(debugID)) {167 return;168 }169 var markName = debugID + '::' + markType;170 lastMarkTimeStamp = performanceNow();171 performance.mark(markName);172 };173 var markEnd = function markEnd(debugID, markType) {174 if (!shouldMark(debugID)) {175 return;176 }177 var markName = debugID + '::' + markType;178 var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown';179 var timeStamp = performanceNow();180 if (timeStamp - lastMarkTimeStamp > 0.1) {181 var measurementName = displayName + ' [' + markType + ']';182 performance.measure(measurementName, markName);183 }184 performance.clearMarks(markName);185 performance.clearMeasures(measurementName);186 };187 ReactDebugTool = {188 addHook: function addHook(hook) {189 hooks.push(hook);190 },191 removeHook: function removeHook(hook) {192 for (var i = 0; i < hooks.length; i++) {193 if (hooks[i] === hook) {194 hooks.splice(i, 1);195 i--;196 }197 }198 },199 isProfiling: function isProfiling() {200 return _isProfiling;201 },202 beginProfiling: function beginProfiling() {203 if (_isProfiling) {204 return;205 }206 _isProfiling = true;207 flushHistory.length = 0;208 resetMeasurements();209 ReactDebugTool.addHook(ReactHostOperationHistoryHook);210 },211 endProfiling: function endProfiling() {212 if (!_isProfiling) {213 return;214 }215 _isProfiling = false;216 resetMeasurements();217 ReactDebugTool.removeHook(ReactHostOperationHistoryHook);218 },219 getFlushHistory: function getFlushHistory() {220 return flushHistory;221 },222 onBeginFlush: function onBeginFlush() {223 currentFlushNesting++;224 resetMeasurements();225 pauseCurrentLifeCycleTimer();226 emitEvent('onBeginFlush');227 },228 onEndFlush: function onEndFlush() {229 resetMeasurements();230 currentFlushNesting--;231 resumeCurrentLifeCycleTimer();232 emitEvent('onEndFlush');233 },234 onBeginLifeCycleTimer: function onBeginLifeCycleTimer(debugID, timerType) {235 checkDebugID(debugID);236 emitEvent('onBeginLifeCycleTimer', debugID, timerType);237 markBegin(debugID, timerType);238 beginLifeCycleTimer(debugID, timerType);239 },240 onEndLifeCycleTimer: function onEndLifeCycleTimer(debugID, timerType) {241 checkDebugID(debugID);242 endLifeCycleTimer(debugID, timerType);243 markEnd(debugID, timerType);...
ReactDebugTool.js
Source:ReactDebugTool.js
...64 };65 return tree;66 }, {});67}68function resetMeasurements() {69 var previousStartTime = currentFlushStartTime;70 var previousMeasurements = currentFlushMeasurements;71 var previousOperations = ReactHostOperationHistoryHook.getHistory();72 if (currentFlushNesting === 0) {73 currentFlushStartTime = 0;74 currentFlushMeasurements = [];75 clearHistory();76 return;77 }78 if (previousMeasurements.length || previousOperations.length) {79 var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();80 flushHistory.push({81 duration: performanceNow() - previousStartTime,82 measurements: previousMeasurements || [],83 operations: previousOperations || [],84 treeSnapshot: getTreeSnapshot(registeredIDs)85 });86 }87 clearHistory();88 currentFlushStartTime = performanceNow();89 currentFlushMeasurements = [];90}91function checkDebugID(debugID) {92 var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;93 if (allowRoot && debugID === 0) {94 return;95 }96 if (!debugID) {97 process.env.NODE_ENV !== 'production' ? warning(false, 'ReactDebugTool: debugID may not be empty.') : void 0;98 }99}100function beginLifeCycleTimer(debugID, timerType) {101 if (currentFlushNesting === 0) {102 return;103 }104 if (currentTimerType && !lifeCycleTimerHasWarned) {105 process.env.NODE_ENV !== 'production' ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'Did not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0;106 lifeCycleTimerHasWarned = true;107 }108 currentTimerStartTime = performanceNow();109 currentTimerNestedFlushDuration = 0;110 currentTimerDebugID = debugID;111 currentTimerType = timerType;112}113function endLifeCycleTimer(debugID, timerType) {114 if (currentFlushNesting === 0) {115 return;116 }117 if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) {118 process.env.NODE_ENV !== 'production' ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0;119 lifeCycleTimerHasWarned = true;120 }121 if (isProfiling) {122 currentFlushMeasurements.push({123 timerType: timerType,124 instanceID: debugID,125 duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration126 });127 }128 currentTimerStartTime = 0;129 currentTimerNestedFlushDuration = 0;130 currentTimerDebugID = null;131 currentTimerType = null;132}133function pauseCurrentLifeCycleTimer() {134 var currentTimer = {135 startTime: currentTimerStartTime,136 nestedFlushStartTime: performanceNow(),137 debugID: currentTimerDebugID,138 timerType: currentTimerType139 };140 lifeCycleTimerStack.push(currentTimer);141 currentTimerStartTime = 0;142 currentTimerNestedFlushDuration = 0;143 currentTimerDebugID = null;144 currentTimerType = null;145}146function resumeCurrentLifeCycleTimer() {147 var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(),148 startTime = _lifeCycleTimerStack$.startTime,149 nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime,150 debugID = _lifeCycleTimerStack$.debugID,151 timerType = _lifeCycleTimerStack$.timerType;152 var nestedFlushDuration = performanceNow() - nestedFlushStartTime;153 currentTimerStartTime = startTime;154 currentTimerNestedFlushDuration += nestedFlushDuration;155 currentTimerDebugID = debugID;156 currentTimerType = timerType;157}158var lastMarkTimeStamp = 0;159var canUsePerformanceMeasure =160// $FlowFixMe https://github.com/facebook/flow/issues/2345161typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function';162function shouldMark(debugID) {163 if (!isProfiling || !canUsePerformanceMeasure) {164 return false;165 }166 var element = ReactComponentTreeHook.getElement(debugID);167 if (element == null || typeof element !== 'object') {168 return false;169 }170 var isHostElement = typeof element.type === 'string';171 if (isHostElement) {172 return false;173 }174 return true;175}176function markBegin(debugID, markType) {177 if (!shouldMark(debugID)) {178 return;179 }180 var markName = debugID + '::' + markType;181 lastMarkTimeStamp = performanceNow();182 performance.mark(markName);183}184function markEnd(debugID, markType) {185 if (!shouldMark(debugID)) {186 return;187 }188 var markName = debugID + '::' + markType;189 var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown';190 // Chrome has an issue of dropping markers recorded too fast:191 // https://bugs.chromium.org/p/chromium/issues/detail?id=640652192 // To work around this, we will not report very small measurements.193 // I determined the magic number by tweaking it back and forth.194 // 0.05ms was enough to prevent the issue, but I set it to 0.1ms to be safe.195 // When the bug is fixed, we can `measure()` unconditionally if we want to.196 var timeStamp = performanceNow();197 if (timeStamp - lastMarkTimeStamp > 0.1) {198 var measurementName = displayName + ' [' + markType + ']';199 performance.measure(measurementName, markName);200 }201 performance.clearMarks(markName);202 performance.clearMeasures(measurementName);203}204var ReactDebugTool = {205 addHook: function (hook) {206 hooks.push(hook);207 },208 removeHook: function (hook) {209 for (var i = 0; i < hooks.length; i++) {210 if (hooks[i] === hook) {211 hooks.splice(i, 1);212 i--;213 }214 }215 },216 isProfiling: function () {217 return isProfiling;218 },219 beginProfiling: function () {220 if (isProfiling) {221 return;222 }223 isProfiling = true;224 flushHistory.length = 0;225 resetMeasurements();226 ReactDebugTool.addHook(ReactHostOperationHistoryHook);227 },228 endProfiling: function () {229 if (!isProfiling) {230 return;231 }232 isProfiling = false;233 resetMeasurements();234 ReactDebugTool.removeHook(ReactHostOperationHistoryHook);235 },236 getFlushHistory: function () {237 return flushHistory;238 },239 onBeginFlush: function () {240 currentFlushNesting++;241 resetMeasurements();242 pauseCurrentLifeCycleTimer();243 emitEvent('onBeginFlush');244 },245 onEndFlush: function () {246 resetMeasurements();247 currentFlushNesting--;248 resumeCurrentLifeCycleTimer();249 emitEvent('onEndFlush');250 },251 onBeginLifeCycleTimer: function (debugID, timerType) {252 checkDebugID(debugID);253 emitEvent('onBeginLifeCycleTimer', debugID, timerType);254 markBegin(debugID, timerType);255 beginLifeCycleTimer(debugID, timerType);256 },257 onEndLifeCycleTimer: function (debugID, timerType) {258 checkDebugID(debugID);259 endLifeCycleTimer(debugID, timerType);260 markEnd(debugID, timerType);...
CellMeasurer.js
Source:CellMeasurer.js
1/** @flow */2import React, { Component, PropTypes } from 'react'3import shallowCompare from 'react-addons-shallow-compare'4import ReactDOM from 'react-dom'5import CellSizeCache from './defaultCellSizeCache'6/**7 * Measures a Grid cell's contents by rendering them in a way that is not visible to the user.8 * Either a fixed width or height may be provided if it is desirable to measure only in one direction.9 */10export default class CellMeasurer extends Component {11 static propTypes = {12 /**13 * Renders a cell given its indices.14 * Should implement the following interface: ({ columnIndex: number, rowIndex: number }): PropTypes.node15 */16 cellRenderer: PropTypes.func.isRequired,17 /**18 * Optional, custom caching strategy for cell sizes.19 */20 cellSizeCache: PropTypes.object,21 /**22 * Function respondible for rendering a virtualized component.23 * This function should implement the following signature:24 * ({ getColumnWidth, getRowHeight, resetMeasurements }) => PropTypes.element25 */26 children: PropTypes.func.isRequired,27 /**28 * Number of columns in grid.29 */30 columnCount: PropTypes.number.isRequired,31 /**32 * A Node, Component instance, or function that returns either.33 * If this property is not specified the document body will be used.34 */35 container: React.PropTypes.oneOfType([36 React.PropTypes.func,37 React.PropTypes.node38 ]),39 /**40 * Assign a fixed :height in order to measure dynamic text :width only.41 */42 height: PropTypes.number,43 /**44 * Number of rows in grid.45 */46 rowCount: PropTypes.number.isRequired,47 /**48 * Assign a fixed :width in order to measure dynamic text :height only.49 */50 width: PropTypes.number51 };52 constructor (props, state) {53 super(props, state)54 this._cellSizeCache = props.cellSizeCache || new CellSizeCache()55 this.getColumnWidth = this.getColumnWidth.bind(this)56 this.getRowHeight = this.getRowHeight.bind(this)57 this.resetMeasurements = this.resetMeasurements.bind(this)58 this.resetMeasurementForColumn = this.resetMeasurementForColumn.bind(this)59 this.resetMeasurementForRow = this.resetMeasurementForRow.bind(this)60 }61 getColumnWidth ({ index }) {62 if (this._cellSizeCache.hasColumnWidth(index)) {63 return this._cellSizeCache.getColumnWidth(index)64 }65 const { rowCount } = this.props66 let maxWidth = 067 for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {68 let { width } = this._measureCell({69 clientWidth: true,70 columnIndex: index,71 rowIndex72 })73 maxWidth = Math.max(maxWidth, width)74 }75 this._cellSizeCache.setColumnWidth(index, maxWidth)76 return maxWidth77 }78 getRowHeight ({ index }) {79 if (this._cellSizeCache.hasRowHeight(index)) {80 return this._cellSizeCache.getRowHeight(index)81 }82 const { columnCount } = this.props83 let maxHeight = 084 for (let columnIndex = 0; columnIndex < columnCount; columnIndex++) {85 let { height } = this._measureCell({86 clientHeight: true,87 columnIndex,88 rowIndex: index89 })90 maxHeight = Math.max(maxHeight, height)91 }92 this._cellSizeCache.setRowHeight(index, maxHeight)93 return maxHeight94 }95 resetMeasurementForColumn (columnIndex) {96 this._cellSizeCache.clearColumnWidth(columnIndex)97 }98 resetMeasurementForRow (rowIndex) {99 this._cellSizeCache.clearRowHeight(rowIndex)100 }101 resetMeasurements () {102 this._cellSizeCache.clearAllColumnWidths()103 this._cellSizeCache.clearAllRowHeights()104 }105 componentDidMount () {106 this._renderAndMount()107 }108 componentWillReceiveProps (nextProps) {109 const { cellSizeCache } = this.props110 if (cellSizeCache !== nextProps.cellSizeCache) {111 this._cellSizeCache = nextProps.cellSizeCache112 }113 this._updateDivDimensions(nextProps)114 }115 componentWillUnmount () {116 this._unmountContainer()117 }118 render () {119 const { children } = this.props120 return children({121 getColumnWidth: this.getColumnWidth,122 getRowHeight: this.getRowHeight,123 resetMeasurements: this.resetMeasurements,124 resetMeasurementForColumn: this.resetMeasurementForColumn,125 resetMeasurementForRow: this.resetMeasurementForRow126 })127 }128 shouldComponentUpdate (nextProps, nextState) {129 return shallowCompare(this, nextProps, nextState)130 }131 _getContainerNode (props) {132 const { container } = props133 if (container) {134 return ReactDOM.findDOMNode(135 typeof container === 'function'136 ? container()137 : container138 )139 } else {140 return document.body141 }142 }143 _measureCell ({144 clientHeight = false,145 clientWidth = true,146 columnIndex,147 rowIndex148 }) {149 const { cellRenderer } = this.props150 const rendered = cellRenderer({151 columnIndex,152 rowIndex153 })154 // Handle edge case where this method is called before the CellMeasurer has completed its initial render (and mounted).155 this._renderAndMount()156 // @TODO Keep an eye on this for future React updates as the interface may change:157 // https://twitter.com/soprano/status/737316379712331776158 ReactDOM.unstable_renderSubtreeIntoContainer(this, rendered, this._div)159 const measurements = {160 height: clientHeight && this._div.clientHeight,161 width: clientWidth && this._div.clientWidth162 }163 ReactDOM.unmountComponentAtNode(this._div)164 return measurements165 }166 _renderAndMount () {167 if (!this._div) {168 this._div = document.createElement('div')169 this._div.style.display = 'inline-block'170 this._div.style.position = 'absolute'171 this._div.style.visibility = 'hidden'172 this._div.style.zIndex = -1173 this._updateDivDimensions(this.props)174 this._containerNode = this._getContainerNode(this.props)175 this._containerNode.appendChild(this._div)176 }177 }178 _unmountContainer () {179 if (this._div) {180 this._containerNode.removeChild(this._div)181 this._div = null182 }183 this._containerNode = null184 }185 _updateDivDimensions (props) {186 const { height, width } = props187 if (188 height &&189 height !== this._divHeight190 ) {191 this._divHeight = height192 this._div.style.height = `${height}px`193 }194 if (195 width &&196 width !== this._divWidth197 ) {198 this._divWidth = width199 this._div.style.width = `${width}px`200 }201 }...
measurer.js
Source:measurer.js
...19 } else {20 return Date.now();21 }22}23function resetMeasurements() {24 if (currentMeasurements.length) {25 data.push({26 duration: now() - currentStartTime,27 measurements: currentMeasurements,28 operations: operations,29 tree: tree30 });31 }32 currentStartTime = now();33 currentMeasurements = [];34}35function clear() {36 currentStartTime = 0;37 currentNestedDuration = 0;38}39const Measurer = {40 begin() {41 if (profiling) {42 return;43 }44 profiling = true;45 data = [];46 resetMeasurements();47 },48 end() {49 if (!profiling) {50 return;51 }52 profiling = false;53 resetMeasurements();54 },55 beforeRender() {56 currentNesting++;57 resetMeasurements();58 clear();59 },60 afterRender() {61 resetMeasurements();62 currentNesting--;63 },64 beforeMountComponent(instanceID, element) {65 tree[instanceID] = element;66 // root67 if (element.getName() === 'Root') {68 roots[instanceID] = element;69 }70 },71 afterMountComponent(instanceID) {72 const item = tree[instanceID];73 item.isMounted = true;74 },75 beforeUpdateComponent(instanceID, element) {...
Using AI Code Generation
1const playwright = require('playwright');2const { chromium } = playwright;3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await page.resetMeasurements();8 await browser.close();9})();
Using AI Code Generation
1const playwright = require('playwright');2(async () => {3 const browser = await playwright.chromium.launch();4 const page = await browser.newPage();5 await page.tracing.start({ screenshots: true, snapshots: true });6 await page.click('text=Get started');7 await page.tracing.stop({ path: 'trace.zip' });8 await browser.close();9})();10const playwright = require('playwright');11(async () => {12 const browser = await playwright.chromium.launch();13 const page = await browser.newPage();14 await page.tracing.start({ screenshots: true, snapshots: true });15 await page.click('text=Get started');16 await page.tracing.stop({ path: 'trace.zip' });17 await browser.close();18})();19const playwright = require('playwright');20(async () => {21 const browser = await playwright.chromium.launch();22 const page = await browser.newPage();23 await page.tracing.start({ screenshots: true, snapshots: true });24 await page.click('text=Get started');25 await page.tracing.stop({ path: 'trace.zip' });26 await browser.close();27})();28const playwright = require('playwright');29(async () => {30 const browser = await playwright.chromium.launch();31 const page = await browser.newPage();32 await page.tracing.start({ screenshots: true, snapshots: true });33 await page.click('text=Get started');34 await page.tracing.stop({ path: 'trace.zip' });35 await browser.close();36})();37const playwright = require('playwright');38(async () => {39 const browser = await playwright.chromium.launch();40 const page = await browser.newPage();41 await page.tracing.start({ screenshots: true, snapshots: true });42 await page.click('text=Get started');
Using AI Code Generation
1const { chromium } = require('playwright');2const path = require('path');3const fs = require('fs');4(async () => {5 const browser = await chromium.launch();6 const context = await browser.newContext();7 const page = await context.newPage();8 await page.waitForSelector('input[name="q"]')9 await page.type('input[name="q"]', 'Playwright');10 await page.screenshot({ path: `example.png` });11 await page.evaluate(() => {12 window.__playwright__resetMeasurements();13 });14 const metrics = await page.metrics();15 console.log(metrics);16 await browser.close();17})();18{19}20const { chromium } = require('playwright');21const path = require('path');
Using AI Code Generation
1const { resetMeasurements } = require('playwright/lib/server/chromium/crNetwork');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await page.screenshot({ path: 'google.png' });8 await browser.close();9})();10 at CDPSession._onMessage (D:\playwright\playwright-examples\node_modules\playwright\lib\server\cdp.js:69:35)11 at CDPSession.emit (events.js:315:20)12 at CDPSession._onMessage (D:\playwright\playwright-examples\node_modules\playwright\lib\server\cdpSession.js:96:14)13 at CDPSession.emit (events.js:315:20)14 at WebSocketTransport._ws.addEventListener.event (D:\playwright\playwright-examples\node_modules\playwright\lib\server\cdpSession.js:34:22)15 at WebSocketTransport.emit (events.js:315:20)16 at WebSocketTransport._ws.onmessage (D:\playwright\playwright-examples\node_modules\playwright\lib\server\transport.js:49:20)17 at WebSocket.onMessage (D:\playwright\playwright-examples\node_modules\ws\lib\event-target.js:132:16)18 at WebSocket.emit (events.js:315:20)19 at Receiver.receiverOnMessage (D:\playwright\playwright-examples\node_modules\ws\lib\websocket.js:789:20)
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.evaluate(() => {7 window.__playwright__internal__resetMeasurements();8 });9 const memory = await page.evaluate(() => {10 return window.performance.memory;11 });12 console.log(memory);13 await browser.close();14})();15{16}
Using AI Code Generation
1const { resetMeasurements } = require('playwright/lib/server/supplements/recorder/recorderMeasurements');2resetMeasurements();3const { resetMeasurements } = require('playwright/lib/server/supplements/recorder/recorderMeasurements');4resetMeasurements();5const { chromium } = require('playwright');6const { resetMeasurements } = require('playwright/lib/server/supplements/recorder/recorderMeasurements');7(async () => {8 const browser = await chromium.launch();9 resetMeasurements();10 const context = await browser.newContext();11 const page = await context.newPage();12 await page.close();13 await context.close();14 await browser.close();15})();16const { chromium } = require('playwright');17const { resetMeasurements } = require('playwright/lib/server/supplements/recorder/recorderMeasurements');18(async () => {19 const browser = await chromium.launch();20 const context = await browser.newContext();21 resetMeasurements();22 const page = await context.newPage();23 await page.close();24 await context.close();25 await browser.close();26})();27const { chromium } = require('playwright');28const { resetMeasurements } = require('playwright/lib/server/supplements/recorder/recorderMeasurements');29(async () => {30 const browser = await chromium.launch();31 const context = await browser.newContext();32 const page = await context.newPage();33 resetMeasurements();34 await page.close();35 await context.close();36 await browser.close();37})();38const { chromium } = require('playwright');39const { resetMeasurements } = require('playwright/lib/server/supplements/recorder/recorderMeasurements');40(async () => {41 const browser = await chromium.launch();42 const context = await browser.newContext();43 const page = await context.newPage();44 resetMeasurements();45 await page.close();46 await context.close();47 await browser.close();48})();49const { chromium } = require('playwright');50const { resetMeasurements
Using AI Code Generation
1const playwright = require('playwright');2const { resetMeasurements } = require('playwright/lib/server/chromium/crNetworkManager');3const { chromium } = playwright;4(async () => {5 const browser = await chromium.launch();6 const context = await browser.newContext();7 const page = await context.newPage();8 await page.waitForTimeout(5000);9 const test = resetMeasurements(page);10 console.log(test);11 await browser.close();12})();13module.exports = {14 launchOptions: {15 },16 contextOptions: {17 viewport: {18 },19 },20 use: {21 viewport: {22 },23 },24};25module.exports = {26 launchOptions: {27 },28 contextOptions: {29 viewport: {30 },31 },
Using AI Code Generation
1import { chromium, devices, webkit, firefox } from 'playwright';2import { resetMeasurements } from 'playwright/lib/server/chromium/crNetworkManager';3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const metrics = await page.evaluate(() => window.performance.getEntriesByType('resource'));8 console.log(metrics);9 resetMeasurements();10 await page.reload();11 const metrics2 = await page.evaluate(() => window.performance.getEntriesByType('resource'));12 console.log(metrics2);13 await browser.close();14})();15const route = await page.route('**/*');16page.on('request', request => {17 console.log(request.url());18});19page.on('response', response => {20 console.log(response.url());21});22import { test } from '@playwright/test';23test('example', async ({ page }) => {24 await page.route('**/*', route => {25 console.log(route.request().url());26 route.continue();27 });28});
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.resetMeasurements();7 await page.click('text=Get started');8 const metrics = await page.metrics();9 console.log(metrics);10 await browser.close();11})();
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!