{"id":3029,"date":"2017-07-03T13:50:00","date_gmt":"2017-07-03T12:50:00","guid":{"rendered":"http:\/\/www.diogonunes.com\/blog\/?p=3029"},"modified":"2020-05-15T14:23:11","modified_gmt":"2020-05-15T13:23:11","slug":"phantomdriver-headless-chrome-driver-jenkins","status":"publish","type":"post","link":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/","title":{"rendered":"Move from PhantomDriver to headless ChromeDriver on Jenkins"},"content":{"rendered":"<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo-1024x885.jpg?resize=580%2C501\" alt=\"\" width=\"580\" height=\"501\" class=\"aligncenter size-large wp-image-3033\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?resize=1024%2C885&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?resize=400%2C346&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?resize=768%2C664&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?resize=1200%2C1037&amp;ssl=1 1200w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?w=1358&amp;ssl=1 1358w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<h3>I had to make that joke \u261d\ufe0f<\/h3>\n<p><!--more--><\/p>\n<p><strong>UPDATE:<\/strong> The initial goal of this post was to guide you through the configuration of the headless Chrome (Driver) on Jenkins. However, in the meantime this happened:<\/p>\n<ul>\n<li><a href=\"https:\/\/news.ycombinator.com\/item?id=14105489\">the maintainer of PhantomJS is stepping down<\/a><\/li>\n<li>because <a href=\"https:\/\/news.ycombinator.com\/item?id=14101233\">headless Chrome is coming<\/a><\/li>\n<\/ul>\n<blockquote>\n<p>Chrome is faster and more stable than PhantomJS. And it doesn&#8217;t eat memory like crazy. &#8212; Vitaly Slobodin, Author of PhantomJS<\/p>\n<\/blockquote>\n<p>Therefore I downgraded my <em>soon-to-be-made-obsolete-by-Chrome-59<\/em> tutorial to a collection of the <strong>helpful links that I used as reference<\/strong> when I installed and configured my headless Chromium on the CI machine.<\/p>\n<hr \/>\n<blockquote>\n<p><strong>Xvfb<\/strong> (short for X virtual framebuffer) is an in-memory display server for UNIX-like operating system (e.g., Linux). It enables you to run graphical applications without a display (e.g., browser tests on a CI server) while also having the ability to take screenshots.<\/p>\n<\/blockquote>\n<h3>Helpful links<\/h3>\n<p><a href=\"http:\/\/elementalselenium.com\/tips\/38-headless\">This awesome guide<\/a> will tell you <strong>how to install and configure Xvfb<\/strong>.<\/p>\n<p><a href=\"https:\/\/gist.github.com\/praphull27\/6950d2a6c76a6e68acb7\">This gist<\/a> helped me <strong>install Chrome on Jenkins\/Ubuntu<\/strong>. Here&#8217;s my final version:<\/p>\n<pre><code># GIST SOURCE: https:\/\/gist.github.com\/praphull27\/6950d2a6c76a6e68acb7\n######################################################################\n\necho \"##### Add Google Chrome's repo to sources...\"\necho \"deb http:\/\/dl.google.com\/linux\/chrome\/deb\/ stable main\" | sudo tee -a \/etc\/apt\/sources.list\n# Install Google's public key used for signing packages (e.g. Chrome)\nwget -q -O - https:\/\/dl-ssl.google.com\/linux\/linux_signing_key.pub | sudo apt-key add -\n\n# Update apt sources\nsudo apt-get update\n\necho \"##### Installing Headless Chrome dependencies...\"\nsudo apt-get install -y libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4\nsudo apt-get install -y google-chrome-stable\nsudo apt-get install -y xvfb gtk2-engines-pixbuf\nsudo apt-get install -y xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable\nsudo apt-get install -y imagemagick x11-apps\n\n## Since https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/ChromeDriver+plugin doesn't work...\necho \"##### Downloading latest ChromeDriver...\"\nLATEST=$(wget -q -O - http:\/\/chromedriver.storage.googleapis.com\/LATEST_RELEASE)\nsudo wget http:\/\/chromedriver.storage.googleapis.com\/$LATEST\/chromedriver_linux64.zip\necho \"##### Extracting and symlinking chromedriver to PATH so it's available globally\"\nsudo unzip chromedriver_linux64.zip &amp;&amp; sudo ln -s $PWD\/chromedriver \/usr\/local\/bin\/chromedriver\n\n# echo \"##### Starting X virtual framebuffer (Xvfb) in background...\"\n# xdpyinfo -display :99 &gt;\/dev\/null 2&gt;&amp;1 &amp;&amp; echo \"Xvfb @99 is in use\" || echo \"Xvfb @99 is free\"\n# Xvfb -ac :99 -screen 0 1280x1024x16 &amp;\n# export DISPLAY=:99\n# xdpyinfo -display :99 &gt;\/dev\/null 2&gt;&amp;1 &amp;&amp; echo \"Xvfb @99 is in use\" || echo \"Xvfb @99 is free\"\n<\/code><\/pre>\n<p>I also had to install the <strong><a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/ChromeDriver+plugin\">ChromeDriver Jenkins plugin<\/a><\/strong>.<\/p>\n<p><a href=\"https:\/\/www.blazemeter.com\/blog\/headless-execution-selenium-tests-jenkins\">This guide<\/a> helps you <strong>configuring Jenkins<\/strong> for both Win\/Nix machines.<\/p>\n<p>And this <a href=\"http:\/\/tobyho.com\/2015\/01\/09\/headless-browser-testing-xvfb\/\">short post<\/a> on <strong>how to run Xvbf<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I had to make that joke \u261d\ufe0f<\/p>\n","protected":false},"author":1,"featured_media":3033,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2],"tags":[55,31],"class_list":["post-3029","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-testing","tag-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Move from PhantomDriver to headless ChromeDriver on Jenkins - The Geeky Gecko<\/title>\n<meta name=\"description\" content=\"How to configure the headless Chrome (Driver) on Jenkins (Ubuntu CI machine). PhantomJS is dead, long live headless Chromium!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Move from PhantomDriver to headless ChromeDriver on Jenkins - The Geeky Gecko\" \/>\n<meta property=\"og:description\" content=\"How to configure the headless Chrome (Driver) on Jenkins (Ubuntu CI machine). PhantomJS is dead, long live headless Chromium!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/\" \/>\n<meta property=\"og:site_name\" content=\"The Geeky Gecko\" \/>\n<meta property=\"article:published_time\" content=\"2017-07-03T12:50:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-15T13:23:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?fit=1358%2C1174&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1358\" \/>\n\t<meta property=\"og:image:height\" content=\"1174\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Diogo Nunes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:site\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Diogo Nunes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/\"},\"author\":{\"name\":\"Diogo Nunes\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"headline\":\"Move from PhantomDriver to headless ChromeDriver on Jenkins\",\"datePublished\":\"2017-07-03T12:50:00+00:00\",\"dateModified\":\"2020-05-15T13:23:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/\"},\"wordCount\":206,\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?fit=1358%2C1174&ssl=1\",\"keywords\":[\"testing\",\"tutorial\"],\"articleSection\":[\"Technology\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/\",\"name\":\"Move from PhantomDriver to headless ChromeDriver on Jenkins - The Geeky Gecko\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?fit=1358%2C1174&ssl=1\",\"datePublished\":\"2017-07-03T12:50:00+00:00\",\"dateModified\":\"2020-05-15T13:23:11+00:00\",\"description\":\"How to configure the headless Chrome (Driver) on Jenkins (Ubuntu CI machine). PhantomJS is dead, long live headless Chromium!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?fit=1358%2C1174&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?fit=1358%2C1174&ssl=1\",\"width\":1358,\"height\":1174},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.diogonunes.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Move from PhantomDriver to headless ChromeDriver on Jenkins\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/\",\"name\":\"The Geeky Gecko\",\"description\":\"The Geeky Gecko\",\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\",\"name\":\"Diogo Nunes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"width\":799,\"height\":799,\"caption\":\"Diogo Nunes\"},\"logo\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/www.diogonunes.com\",\"https:\/\/x.com\/dialexnunes\"],\"url\":\"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Move from PhantomDriver to headless ChromeDriver on Jenkins - The Geeky Gecko","description":"How to configure the headless Chrome (Driver) on Jenkins (Ubuntu CI machine). PhantomJS is dead, long live headless Chromium!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/","og_locale":"en_US","og_type":"article","og_title":"Move from PhantomDriver to headless ChromeDriver on Jenkins - The Geeky Gecko","og_description":"How to configure the headless Chrome (Driver) on Jenkins (Ubuntu CI machine). PhantomJS is dead, long live headless Chromium!","og_url":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/","og_site_name":"The Geeky Gecko","article_published_time":"2017-07-03T12:50:00+00:00","article_modified_time":"2020-05-15T13:23:11+00:00","og_image":[{"width":1358,"height":1174,"url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?fit=1358%2C1174&ssl=1","type":"image\/jpeg"}],"author":"Diogo Nunes","twitter_card":"summary_large_image","twitter_creator":"@dialexnunes","twitter_site":"@dialexnunes","twitter_misc":{"Written by":"Diogo Nunes","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#article","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/"},"author":{"name":"Diogo Nunes","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"headline":"Move from PhantomDriver to headless ChromeDriver on Jenkins","datePublished":"2017-07-03T12:50:00+00:00","dateModified":"2020-05-15T13:23:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/"},"wordCount":206,"publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?fit=1358%2C1174&ssl=1","keywords":["testing","tutorial"],"articleSection":["Technology"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/","url":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/","name":"Move from PhantomDriver to headless ChromeDriver on Jenkins - The Geeky Gecko","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#primaryimage"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?fit=1358%2C1174&ssl=1","datePublished":"2017-07-03T12:50:00+00:00","dateModified":"2020-05-15T13:23:11+00:00","description":"How to configure the headless Chrome (Driver) on Jenkins (Ubuntu CI machine). PhantomJS is dead, long live headless Chromium!","breadcrumb":{"@id":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#primaryimage","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?fit=1358%2C1174&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?fit=1358%2C1174&ssl=1","width":1358,"height":1174},{"@type":"BreadcrumbList","@id":"https:\/\/www.diogonunes.com\/blog\/phantomdriver-headless-chrome-driver-jenkins\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.diogonunes.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Move from PhantomDriver to headless ChromeDriver on Jenkins"}]},{"@type":"WebSite","@id":"https:\/\/www.diogonunes.com\/blog\/#website","url":"https:\/\/www.diogonunes.com\/blog\/","name":"The Geeky Gecko","description":"The Geeky Gecko","publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c","name":"Diogo Nunes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","width":799,"height":799,"caption":"Diogo Nunes"},"logo":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/www.diogonunes.com","https:\/\/x.com\/dialexnunes"],"url":"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2017\/04\/ghostbuster-logo.jpg?fit=1358%2C1174&ssl=1","jetpack-related-posts":[{"id":2650,"url":"https:\/\/www.diogonunes.com\/blog\/browserstack-cross-browser-testing-review\/","url_meta":{"origin":3029,"position":0},"title":"Cross-browser testing with BrowserStack: a review","author":"Diogo Nunes","date":"15 August, 2016","format":false,"excerpt":"These are BrowserStack's main services or tools: Automate: Where you run your automated Selenium tests and check the results. Screenshots: Paste an URL, select the browsers and version you want, and in a few minutes you get a batch of screenshots. Live: by connecting to their data center you are\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"browserstack-logo","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/07\/browserstack-logo.png?fit=1024%2C337&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/07\/browserstack-logo.png?fit=1024%2C337&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/07\/browserstack-logo.png?fit=1024%2C337&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/07\/browserstack-logo.png?fit=1024%2C337&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":4453,"url":"https:\/\/www.diogonunes.com\/blog\/playwright-cheat-sheet\/","url_meta":{"origin":3029,"position":1},"title":"Playwright cheat sheet","author":"Diogo Nunes","date":"7 February, 2022","format":false,"excerpt":"\u2b50\ufe0f This post was featured in Software Testing Weekly #110 and Coding JAG #76 My first experience with Playwright was terrible. However the testing community seems to be loving it, thus I gave it another shot. I started by doing a free course, but I don't recommend it, it's very\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/11\/patrick-tomasso-Oaqk7qqNh_c-unsplash.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/11\/patrick-tomasso-Oaqk7qqNh_c-unsplash.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/11\/patrick-tomasso-Oaqk7qqNh_c-unsplash.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/11\/patrick-tomasso-Oaqk7qqNh_c-unsplash.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/11\/patrick-tomasso-Oaqk7qqNh_c-unsplash.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":2566,"url":"https:\/\/www.diogonunes.com\/blog\/cross-browser-testing-tuttu-testing-through-ui\/","url_meta":{"origin":3029,"position":2},"title":"Before doing cross-browser testing ask yourself: are you TuTTu?","author":"Diogo Nunes","date":"18 July, 2016","format":false,"excerpt":"Recently I had the requirement to test the behavior of a web application on Chrome, Firefox... and the dreaded Internet Explorer. The team already had automated end-to-end test written in Java using Selenium web driver. We decided to explore the world of automated cross-browser testing and we were recommended BrowserStack\u2026","rel":"","context":"In &quot;Work&quot;","block_context":{"text":"Work","link":"https:\/\/www.diogonunes.com\/blog\/category\/work\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/07\/cross-browser-header.png?fit=1200%2C646&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/07\/cross-browser-header.png?fit=1200%2C646&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/07\/cross-browser-header.png?fit=1200%2C646&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/07\/cross-browser-header.png?fit=1200%2C646&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/07\/cross-browser-header.png?fit=1200%2C646&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":2574,"url":"https:\/\/www.diogonunes.com\/blog\/how-to-use-browserstack-cross-browser-testing\/","url_meta":{"origin":3029,"position":3},"title":"Testing for cross-browser compatibility using BrowserStack","author":"Diogo Nunes","date":"12 September, 2016","format":false,"excerpt":"Learn how to do it with this example Recalling my BrowserStack review, their main tools are: Automate: Where you run your automated Selenium tests and check the results. Screenshots: Paste an URL, select the browsers and version you want, and in a few minutes you get a batch of screenshots.\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/6-Useful-Cross-Browser-Testing-Tools.png?fit=956%2C343&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/6-Useful-Cross-Browser-Testing-Tools.png?fit=956%2C343&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/6-Useful-Cross-Browser-Testing-Tools.png?fit=956%2C343&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/6-Useful-Cross-Browser-Testing-Tools.png?fit=956%2C343&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":2718,"url":"https:\/\/www.diogonunes.com\/blog\/internet-button-tutorial-click-button\/","url_meta":{"origin":3029,"position":4},"title":"Internet Button: push my buttons (tutorial #3)","author":"Diogo Nunes","date":"27 February, 2017","format":false,"excerpt":"Assign a different action to each button. Particle released a C++ library that handles much of the interaction with the Internet Button hardware components. That lib is publicly available on GitHub and includes a bunch of useful examples. To check if a button was pressed becomes as easy as buttonOn(led_number).\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial3.jpg?fit=984%2C656&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial3.jpg?fit=984%2C656&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial3.jpg?fit=984%2C656&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial3.jpg?fit=984%2C656&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":2702,"url":"https:\/\/www.diogonunes.com\/blog\/internet-button-tutorial-ide-atom-github\/","url_meta":{"origin":3029,"position":5},"title":"Internet Button: Web IDE, Atom, GitHub (tutorial #1)","author":"Diogo Nunes","date":"2 January, 2017","format":false,"excerpt":"First things first. Now that you can connect to your Photon, it's time to give it some intelligence - time to get coding! To manage that code let's create a git repo. GitHub The official documentation recommends that you fork their InternetButton repo. You don't have to, but it helps\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial1.jpg?fit=984%2C656&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial1.jpg?fit=984%2C656&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial1.jpg?fit=984%2C656&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial1.jpg?fit=984%2C656&ssl=1&resize=700%2C400 2x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/3029","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/comments?post=3029"}],"version-history":[{"count":3,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/3029\/revisions"}],"predecessor-version":[{"id":3053,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/3029\/revisions\/3053"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media\/3033"}],"wp:attachment":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media?parent=3029"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/categories?post=3029"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/tags?post=3029"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}