Chrome DevTools
Tools & Tricks
Jon Rojí Taboada
https://bit.ly/2WGbN9q
Jon Rojí Taboada
🦄 🖌️ 🍺

Frontend at Sngular - @Jnroji
https://bit.ly/2WGbN9q
Disclaimer!
DETECT, TOOLS AND TIPS, NOT FIX
Chrome DevTools
💻
😄
🤨
🤯
console.log()
console.log()
console.log()
console.log()
console.log()
console.log()
console.log()
console.log()
Chrome DevTools
💻
console.log() 🔍
DevTools 🔬 🔧
Chrome DevTools
✏️ DOM & styles
▶️ Console Master
📂 Sources
✋ Debuggers & Breakpoints
🌐 Network
📈 Coverage
🧙♀️ Tools & tricks
Chrome DevTools DOM and styles




Client
Unknown behaviors
Chrome DevTools - DOM and styles



DOM
CSS
Chrome DevTools - DOM and styles


Can select and edit an HTML node and all properties


And store the element as temp1 ... tempn on console to explore it
Chrome DevTools - DOM and styles


Copy option got some great options

You can copy the css selector, in order to obtain the element. SO USEFUL for testing porpouses

Chrome DevTools - DOM and styles


Styles

Element
states modifier

Element
classes modifier
Nice when toggling classes


Chrome DevTools - DOM and styles

Styles

Class addition
If we maintain pressed for a few seconds, we can change the file where the class is added


Chrome DevTools - DOM and styles

Computed

Useful debugging for a concrete property on a big design system


Study box properties and sizes
Chrome DevTools - DOM and styles




You can create breakpoints on node modifications!
subtree modifications - stops when any child is modified
attribute modifications - stops when an attr is modified
node removal - stops if the node is removed from DOM
Chrome DevTools - DOM and styles


Event Listeners
Event Listeners show you events associated to the selected node
Deactivate Ancestors check in order to avoid info overflow

Chrome DevTools - DOM and styles

Accessibility
Can explore a11y node information
Check the role attribute in order to check what people expects from the element


Chrome DevTools - DOM and styles

Bonus!
Tired of native screenshots?

cmd + shift + P
Chrome DevTools - Performance

More tools > Animation
(cmd + shift + p)

Chrome DevTools Console

Chrome DevTools - Console

Console

$0 - References the selected HTML element
Execution context from the debugger
Chrome DevTools - Console

Console


❤️ Live expressions
JS statements that executes every 250ms

Chrome DevTools Sources




Client
Inherit code
Chrome DevTools - Sources

Sources

One of the most important and complex areas on DevTools
Show loaded files
Allow us to set breakpoints (not only on js)
Allow us to override entire files!
Blackbox scripts!
Chrome DevTools - Sources

Sources

Page
Show all the context loaded on our browser and all files
All selected files will be shown on the main window, allowing us to set breakpoints
Better to use "Search" tool

Pretty print!

Chrome DevTools - Sources

Filesystem
We can link the served content with our files, and save the edited content!
❤️ Great editing styles

Look for the green point
❤️ Awesome for local development
Chrome DevTools - Sources

Overrides
We can replace a served file with a custom and editable file!
- active Enable Local Overrides
- Select the file on network and save for override
❤️ Great for testing new solutions
Look for the purple point
❤️ Awesome for production testing

Chrome DevTools - Sources

Threads & Watch

Threads
Useful working with web workers
Can pause both threads at the same time
Watch (deprecated?) > live expressions
Show info about variables values

Chrome DevTools - Sources

Breakpoints!
JS breakpoint

Stop JS execution on the selected line or debugger


Shows info about the
hovered variable
Chrome DevTools - Sources

Breakpoints!



Pause
Next statement
Jump into/out of function
Next statement (including functions)




Chrome DevTools - Sources

Breakpoints!
Call Stack


Show us all the functions called from the breakpoint
Blackbox the libraries and frameworks!
Scope
Show us the local and global context in the moment of the execution pause so we dont need to hover all props on the source file
Console context becomes the local!


Chrome DevTools - Sources

Breakpoints!
XHR Breakpoints

Type a url fragment to stop on xhr request
The Call Stack will show where the request is initiated, allowing us to navigate there

Chrome DevTools - Sources

Breakpoints!
DOM elements Breakpoints

Select a HTML Element and select Break on >
The Call Stack will show where the modification is requested, useful using events or toggling attributes

Chrome DevTools - Sources

Breakpoints!
Event Listener Breakpoints

You can activate breakpoints for any kind of event, in order to analize where the application is listening for.
You can see the Global listeners setted too

Chrome DevTools Network



Blame Backend

Study your HUGE web
Chrome DevTools - Network


Chrome DevTools - Network


We can get request information by clicking it
Check if the request params are ok
Chrome DevTools - Network




Capture screenshots, useful for understand the critical path

Show requests with more information (files weight & more)

Preserve log, useful when quick redirections happens
Disable cache, nice for development and analysis
Chrome DevTools - Network




One of the best tools on DevTools
Allow us to limit the connection speed
Test like a 3g network or Offline (nice for PWA)
Great for look into the waterfall graph
Slow 3G is too slow...
Can be configure from dev console (cmd + shift + p)


Chrome DevTools - Network


With 3G activated, the waterfall is more visible, and with screenshots, we can detect the "prerender" requested sources

Chrome DevTools - Network



Block requests by URL or Domain
Allow us to check the web behaviour without the blocked resource
Save for overrides
Magic
Chrome DevTools - Network


Check the "Priority" column, in order to see the requests priorities


Chrome DevTools - Network


Chrome DevTools - Performance

More tools > Coverage
(cmd + shift + p)
Check unused CSS & JS

Chrome DevTools Performance



Client
50k lines of code

Chrome DevTools - Audits



Chrome DevTools - Audits

Now available for CI

https://github.com/ebidel/lighthousebot
Chrome DevTools - Performance


The worse config, the better
Check Screenshots for more info without hovering

Click on the gray circle to analyze concrete areas or behaviours, or on the arrow to force a full load
Chrome DevTools - Performance



Chrome DevTools - Performance

Discover
Analyze
Fix
Chrome DevTools - Performance



FPS
The green bars show fps during the rendering / animation

The redpoints shows bottlenecks or fps problems

CPU
Shows CPU use. Discover critical points
Screenshots will help identifying the critical points

Chrome DevTools - Performance


Performance is the art of doing less
Scripting and Rendering
426.2 ms + 279.0 ms
Check colors for info!
requestIdleCallback
requestAnimationFrame
Chrome DevTools - Performance


Select a problematic stack call, and analyze

Navigate on stack call to detect problematic points
Chrome DevTools - Performance


More tools > Rendering
(cmd + shift + p)
FPS meter 🧭
Paint flashing 🖼️
Scrolling performance issues 🧶
Chrome DevTools - Performance



Chrome has their own Task manager where we can check the consumed memory
Chrome DevTools - Performance


Chrome DevTools - Performance

More tools > Performance monitor
(cmd + shift + p)
Check a lot of params

Chrome DevTools Application

Chrome DevTools - Application


PWA info
Storage
Cache
Frames
Chrome DevTools - Application



Services workers
Manifest
Can test notifications on the fly or force updates

Shows info about the manifest and PWA configuration
Chrome DevTools - Application


Golden button for devs
(and clients)
Chrome DevTools - Application


Shows and allow to modify different storages
Modify access tokens in order to see the "renovation case"


Chrome DevTools TOO MUCH
https://bit.ly/2WGbN9q

THANK YOU
@JNROJI
https://bit.ly/2WGbN9q

chrome-devtools
By Jon Rojí
chrome-devtools
- 1,742