Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
async def stop(self) -> List:
"""Stop coverage measurement and return results."""
if not self._enabled:
raise PageError('CSSCoverage is not enabled.')
self._enabled = False
result = await self._client.send('CSS.stopRuleUsageTracking')
await self._client.send('CSS.disable')
await self._client.send('DOM.disable')
helper.removeEventListeners(self._eventListeners)
# aggregate by styleSheetId
styleSheetIdToCoverage: Dict = {}
for entry in result['ruleUsage']:
ranges = styleSheetIdToCoverage.get(entry['styleSheetId'])
if not ranges:
ranges = []
styleSheetIdToCoverage[entry['styleSheetId']] = ranges
ranges.append({
'startOffset': entry['startOffset'],
'endOffset': entry['endOffset'],
'count': 1 if entry['used'] else 0
})
coverage = []
for styleSheetId in self._stylesheetURLs:
def _cleanup(self) -> None:
helper.removeEventListeners(self._eventListeners)
self._lifecycleCompletePromise.cancel()
self._maximumTimer.cancel()
self._timeout_timer.cancel()
async def stop(self) -> List:
"""Stop coverage measurement and return results."""
if not self._enabled:
raise PageError('JSCoverage is not enabled.')
self._enabled = False
result = await self._client.send('Profiler.takePreciseCoverage')
await self._client.send('Profiler.stopPreciseCoverage')
await self._client.send('Profiler.disable')
await self._client.send('Debugger.disable')
helper.removeEventListeners(self._eventListeners)
coverage: List = []
for entry in result.get('result', []):
url = self._scriptURLs.get(entry.get('scriptId'))
text = self._scriptSources.get(entry.get('scriptId'))
if text is None or url is None:
continue
flattenRanges: List = []
for func in entry.get('functions', []):
flattenRanges.extend(func.get('ranges', []))
ranges = convertToDisjointRanges(flattenRanges)
coverage.append({'url': url, 'ranges': ranges, 'text': text})
return coverage
eventListeners = [helper.addEventListener(
self._networkManager,
NetworkManager.Events.Request,
set_request,
)]
timeout = options.get('timeout', self._defaultNavigationTimeout)
watcher = NavigatorWatcher(self._frameManager, mainFrame, timeout,
options)
result = await self._navigate(url, referrer)
if result is not None:
raise PageError(result)
result = await watcher.navigationPromise()
watcher.cancel()
helper.removeEventListeners(eventListeners)
error = result[0].pop().exception() # type: ignore
if error:
raise error
request = requests.get(mainFrame._navigationURL)
return request.response if request else None
for target in browser.targets():
if target.type == 'page':
return
initialPagePromise = self._loop.create_future()
def initialPageCallback() -> None:
initialPagePromise.set_result(True)
def check_target(target: Target) -> None:
if target.type == 'page':
initialPageCallback()
listeners = [addEventListener(browser, 'targetcreated', check_target)]
await initialPagePromise
removeEventListeners(listeners)
""" # noqa: E501
options = merge_dict(options, kwargs)
mainFrame = self._frameManager.mainFrame
if mainFrame is None:
raise PageError('No main frame.')
timeout = options.get('timeout', self._defaultNavigationTimeout)
watcher = NavigatorWatcher(self._frameManager, mainFrame, timeout,
options)
responses: Dict[str, Response] = dict()
listener = helper.addEventListener(
self._networkManager,
NetworkManager.Events.Response,
lambda response: responses.__setitem__(response.url, response)
)
result = await watcher.navigationPromise()
helper.removeEventListeners([listener])
error = result[0].pop().exception()
if error:
raise error
response = responses.get(self.url, None)
return response