SlideShare a Scribd company logo
Writing Tools
using WebKit
ARIYA HIDAYAT
ENGINEERING DIRECTOR, SENCHA
whoami
Let’s Start the PARTY
Let’s Start the PARTY
Unintentional Regression
This is
awesome!
forget to run
the tests
REGRESSION
Unintentional Regression
This is
awesome!
forget to run
the tests
REGRESSION
Unintentional Regression
This is
awesome!
Pre-commit hook to
command line test runner
Using WebView
QWebView webView;
webView.show();
webView.setUrl(QUrl("http://www.sencha.com"));
Capture to Image
QWebPage page;
QImage image(size, QImage::Format_ARGB32_Premultiplied);
image.fill(Qt::transparent);
QPainter p(&image);
page.mainFrame()->render(&p);
p.end();
image.save(fileName);
Test Runner
specrunner SpecRunner.html
5 specs, 0 failures in 0.013s
specrunner SpecRunner.html
FAIL: 5 specs, 1 failure in 0.014s
Network Log
28: GET http://www.google.com/m/gp
292: Response 200 application/xhtml+xml; charset=UTF-8 0 bytes http://www.google.com/m/gp
311: GET data:image/gif;base64,R0lGODlhiA...
312: GET data:image/gif;base64,R0lGODlhJA...
312: GET data:image/gif;base64,R0lGODlhGA...
312: Response 0 image/gif 3611 bytes data:image/gif;base64,R0lGODlhiA...
312: Finish fail data:image/gif;base64,R0lGODlhiA...
312: Response 0 image/gif 284 bytes data:image/gif;base64,R0lGODlhJA...
312: Finish fail data:image/gif;base64,R0lGODlhJA...
312: Response 0 image/gif 178 bytes data:image/gif;base64,R0lGODlhGA...
312: Finish fail data:image/gif;base64,R0lGODlhGA...
317: Response 200 application/xhtml+xml; charset=UTF-8 0 bytes http://www.google.com/m/gp
324: Finish fail http://www.google.com/m/gp
328: GET http://www.google.com/m/gn/user?...
329: Finish success http://www.google.com/m/gn/user?...
Recorder & Replayer
Remote Console for
http://github.com/senchalabs/android-tools
Remote Console for
http://github.com/senchalabs/android-tools
THANK YOU!
QUESTIONS?
ariya @ sencha.com
ariyahidayat
ariya.blogspot.com
ADDENDUM
Around the Project
0
10000
20000
30000
40000
50000
60000
70000
80000
0 1 2 3 4 5 6 7 8 9 10
Revisions
Years
History
0
10000
20000
30000
40000
50000
60000
70000
80000
0 1 2 3 4 5 6 7 8 9 10
Revisions
Years
History ~2000 commits/month
Level of Involvement
Contributor
Committer
≈ 130 Reviewer
≈ 80
accept or reject patches
checks in reviewed patches
after 10-20 patches
after 80 patches
WebKit Reviewers
Apple
38
Google
19
Nokia
7
RIM
6
Misc
12
WebKit Reviewers
Apple
38
Google
19
Nokia
7
RIM
6
Misc
12
1
Components of WebKit
WebKit Library
JavaScriptCore
WebCore
HTML rendering
SVG
DOM CSS
Platform Abstractions
Network Unicode Clipboard
Graphics Theme Events
Thread Geolocation Timer
Different “Ports”
WebCore
graphics
Mac Chromium Qt Gtk
CoreGraphics
Skia
QPainter
Cairo
graphics stack
GraphicsContext
Web Browsers
Safari
WebCore + JavaScriptCore
Eclair
WebCore + V8
Chrome Froyo
WebKit Everywhere
Browser
Devices
Runtime
How Fresh?
Fall 2010Spring 2010
Chrome 7
534.7
Safari 5
533.18
Android 2.2
533.1
Safari 4
528.16
AIR 2.5
531.9
mid 2009
Extensive Tests
the rest
229 MB
tests
904 MB≈ 20,000 tests
Workflow
1 Every commit needs to be reviewed
2 Broken commit must be reverted
Workflow
1 Every commit needs to be reviewed
2 Broken commit must be reverted
quality control
zero-regression policy
Get + Build + Launch
Requirements
• Subversion or Git
• C++ compiler
• Perl
• Python
• Various SDK
Using Subversion
svn checkout http://svn.webkit.org/repository/
webkit/trunk webkit
cd webkit
≈ 880 MB .svn
Using git
git clone git://git.webkit.org/WebKit.git
cd WebKit
≈ 1.2 GB .git
Build
WebKitTools/Scripts/build-webkit
--qt for Qt, --gtk for Gtk+
--debug for “Debug” mode
Launch
WebKitTools/Scripts/run-launcher
--qt for Qt, --gtk for Gtk+
--debug for “Debug” mode

More Related Content

PDF
Understanding Hardware Acceleration on Mobile Browsers
PDF
Analyzing the Performance of Mobile Web
PDF
Understanding Hardware Acceleration on Mobile Browsers
PDF
Build HTML5 App (Intel Elements 2011)
PDF
Going to Mars with Groovy Domain-Specific Languages
PDF
Html5 with Vaadin and Scala
PPTX
Siggraph 2016 - Vulkan and nvidia : the essentials
PPT
GWT Extreme!
Understanding Hardware Acceleration on Mobile Browsers
Analyzing the Performance of Mobile Web
Understanding Hardware Acceleration on Mobile Browsers
Build HTML5 App (Intel Elements 2011)
Going to Mars with Groovy Domain-Specific Languages
Html5 with Vaadin and Scala
Siggraph 2016 - Vulkan and nvidia : the essentials
GWT Extreme!

What's hot (20)

PDF
COSCUP 2020 Google 技術 x 公共參與 x 開源 口罩地圖技術開源
ODP
Web Standards for AR workshop at ISMAR13
PDF
Building a JavaScript Library
PDF
Modern UI Development With Node.js
PPTX
iOSDC 2018 動画をなめらかに動かす技術
PDF
Performance Improvements in Browsers
PDF
Web components with java by Haijian Wang
ODP
Power ai image-pipeline
PDF
Asynchronous Module Definition (AMD)
ODP
Using Grails to power your electric car
PDF
Звиад Кардава "Android Things + Google Weave"
KEY
JBoss World 2010
PDF
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
PPTX
The Workflow Pattern, Composed (2021)
PDF
GDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
PDF
Groovy & Grails for Spring/Java developers
PPTX
NvFX GTC 2013
PDF
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
PDF
Building Real-Time Applications with Android and WebSockets
PDF
PT-4057, Automated CUDA-to-OpenCL™ Translation with CU2CL: What's Next?, by W...
COSCUP 2020 Google 技術 x 公共參與 x 開源 口罩地圖技術開源
Web Standards for AR workshop at ISMAR13
Building a JavaScript Library
Modern UI Development With Node.js
iOSDC 2018 動画をなめらかに動かす技術
Performance Improvements in Browsers
Web components with java by Haijian Wang
Power ai image-pipeline
Asynchronous Module Definition (AMD)
Using Grails to power your electric car
Звиад Кардава "Android Things + Google Weave"
JBoss World 2010
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
The Workflow Pattern, Composed (2021)
GDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
Groovy & Grails for Spring/Java developers
NvFX GTC 2013
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
Building Real-Time Applications with Android and WebSockets
PT-4057, Automated CUDA-to-OpenCL™ Translation with CU2CL: What's Next?, by W...
Ad

Similar to Writing Tools using WebKit (20)

PDF
Hybrid Apps (Native + Web) via QtWebKit
PDF
Hybrid Apps (Native + Web) using WebKit
PDF
Hybrid Apps (Native + Web) using WebKit
PDF
Introduction to QtWebKit
PPTX
WebKit, why it matters?
PDF
The WebKit project (LinuxCon North America 2012)
PDF
Developments in the Qt WebKit Integration
PDF
WebKit, why it matters (PDF version)
PDF
The WebKit project
PDF
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
PDF
2021 WebKit Contributors Meeting, Igalia
PDF
WebKit and Blink: open development powering the HTML5 revolution
PDF
Igalia and WebKit: Status update and plans
PDF
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
PDF
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
PDF
Ugly truths about html5 moosecon - robert virkus - 2013-03-07
PDF
WebKit2 And You (GUADEC 2013)
PDF
Wayland support in WebKit2GTK+ (GUADEC 2014)
PPTX
SFHTML5 Meetup - Engineering Microsoft Edge for the web of today and tomorrow
PDF
Lessons from Contributing to WebKit and Blink
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
Introduction to QtWebKit
WebKit, why it matters?
The WebKit project (LinuxCon North America 2012)
Developments in the Qt WebKit Integration
WebKit, why it matters (PDF version)
The WebKit project
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
2021 WebKit Contributors Meeting, Igalia
WebKit and Blink: open development powering the HTML5 revolution
Igalia and WebKit: Status update and plans
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
Ugly truths about html5 moosecon - robert virkus - 2013-03-07
WebKit2 And You (GUADEC 2013)
Wayland support in WebKit2GTK+ (GUADEC 2014)
SFHTML5 Meetup - Engineering Microsoft Edge for the web of today and tomorrow
Lessons from Contributing to WebKit and Blink
Ad

Recently uploaded (20)

PPTX
sap open course for s4hana steps from ECC to s4
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Encapsulation theory and applications.pdf
PPT
Teaching material agriculture food technology
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
cuic standard and advanced reporting.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Cloud computing and distributed systems.
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
KodekX | Application Modernization Development
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
MYSQL Presentation for SQL database connectivity
sap open course for s4hana steps from ECC to s4
Dropbox Q2 2025 Financial Results & Investor Presentation
Encapsulation theory and applications.pdf
Teaching material agriculture food technology
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
“AI and Expert System Decision Support & Business Intelligence Systems”
NewMind AI Weekly Chronicles - August'25 Week I
cuic standard and advanced reporting.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Cloud computing and distributed systems.
Encapsulation_ Review paper, used for researhc scholars
Chapter 3 Spatial Domain Image Processing.pdf
Electronic commerce courselecture one. Pdf
KodekX | Application Modernization Development
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
MIND Revenue Release Quarter 2 2025 Press Release
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
MYSQL Presentation for SQL database connectivity

Writing Tools using WebKit