{"id":7480,"date":"2015-11-12T16:48:37","date_gmt":"2015-11-12T13:48:37","guid":{"rendered":"http:\/\/railsware.com\/blog\/?p=7480"},"modified":"2021-08-13T11:37:40","modified_gmt":"2021-08-13T08:37:40","slug":"debugging-capybara-screenshot-of-error-page-on-circleci","status":"publish","type":"post","link":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/","title":{"rendered":"Debugging Capybara: screenshot of error page on CircleCI"},"content":{"rendered":"\n<p class=\"intro-text wp-block-paragraph\">Having real screenshot of a failed integration spec can save hours of debugging. We had screenshot with error on the local development environment, and wanted to have it on Continuous Integration server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Luckily for us, it&#8217;s a real no-brainer, if you use <a href=\"https:\/\/circleci.com\/\" rel=\"nofollow\">CircleCI<\/a>. There is no need for custom S3 upload or some additional services. It&#8217;s just a configuration matter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CircleCI has a concept of <code class=\"\" data-line=\"\">$CIRCLE_ARTIFACTS<\/code> folder. You can put any file into this folder, and it will show all files in this folder after build is finished.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Configuring spec_helper.rb<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Put this snippet into <code class=\"\" data-line=\"\">spec_helper.rb<\/code> file(RSpec 3):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:ruby\">RSpec.configure do |config|\n\n  # ... other configuration options\n\n  def save_timestamped_screenshot(page, meta)\n    filename = File.basename(meta[:file_path])\n    line_number = meta[:line_number]\n\n    time_now = Time.now\n    timestamp = \"#{time_now.strftime('%Y-%m-%d-%H-%M-%S.')}#{'%03d' % (time_now.usec\/1000).to_i}\"\n\n    screenshot_name = \"screenshot-#{filename}-#{line_number}-#{timestamp}.png\"\n    screenshot_path = \"#{ENV.fetch('CIRCLE_ARTIFACTS', Rails.root.join('tmp\/capybara'))}\/#{screenshot_name}\"\n\n    page.save_screenshot(screenshot_path)\n\n    puts \"\\n  Screenshot: #{screenshot_path}\"\n  end\n\n  config.after(:each) do |example|\n    if example.metadata[:js]\n      save_timestamped_screenshot(Capybara.page, example.metadata) if example.exception\n    end\n  end\n\n  # ... other configuration options\nend\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In RSpec 2 <code class=\"\" data-line=\"\">example<\/code> is implicit parameter, so <code class=\"\" data-line=\"\">config.after(:each)<\/code> should be slightly different:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:ruby\">  config.after(:each) do\n    if example.metadata[:js]\n      save_timestamped_screenshot(Capybara.page, example.metadata) if example.exception\n    end\n  end\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This configuration should work for <code class=\"\" data-line=\"\">webkit<\/code>, <code class=\"\" data-line=\"\">selenium<\/code>, and <code class=\"\" data-line=\"\">poltergeist<\/code> drivers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Usage<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Running within CircleCI environment this script will save all screenshots with integration specs failures in the <code class=\"\" data-line=\"\">$CIRCLE_ARTIFACTS<\/code> folder. Here is how it looks like:<br><a href=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2015\/11\/brightbytesbrightbytes-19159-CircleCI-2015-11-11-13-09-301.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7487\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2015\/11\/brightbytesbrightbytes-19159-CircleCI-2015-11-11-13-09-301.png\" alt=\"brightbytes:brightbytes #19159 - CircleCI 2015-11-11 13-09-30\" width=\"800\" height=\"507\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2015\/11\/brightbytesbrightbytes-19159-CircleCI-2015-11-11-13-09-301.png 800w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2015\/11\/brightbytesbrightbytes-19159-CircleCI-2015-11-11-13-09-301-300x190.png 300w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><br>You can open the link and see how scenario failed on the CI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For development environment it stores all screenshots within <code class=\"\" data-line=\"\">tmp\/capybara<\/code> of your Rails root folder, and outputs &#8220;Screenshot path-to-file&#8221; into the console, so it&#8217;s easy to find and check it. On the Mac it&#8217;s just:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted toolbar:2 wrap:true theme:tomorrow-night lang:sh nums:false\">$ open path-to-file\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s it, folks! Hope, you will save a lot of debugging hours with this simple trick.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Having real screenshot of a failed integration spec can save hours of debugging. We had screenshot with error on the local development environment, and wanted to have it on Continuous Integration server. Luckily for us, it&#8217;s a real no-brainer, if you use CircleCI. There is no need for custom S3 upload or some additional services&#8230;.<\/p>\n","protected":false},"author":25,"featured_media":9432,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[3],"tags":[],"coauthors":["Sergii Boiko"],"class_list":["post-7480","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Having real screenshot of a failed integration spec can save hours of debugging. We had screenshot with error on the local development environment, and wanted to have it on Continuous Integration server. Luckily for us, it&#039;s a real no-brainer, if you use CircleCI. There is no need for custom S3 upload or some additional services.\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Sergii Boiko\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"| Blog on Engineering, Product Management, Transparency, Culture and many more...\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Debugging Capybara: screenshot of error page on CircleCI | Railsware Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"Having real screenshot of a failed integration spec can save hours of debugging. We had screenshot with error on the local development environment, and wanted to have it on Continuous Integration server. Luckily for us, it&#039;s a real no-brainer, if you use CircleCI. There is no need for custom S3 upload or some additional services.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2015\/11\/Debugging-Capybara.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2015\/11\/Debugging-Capybara.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"360\" \/>\n\t\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2015-11-12T13:48:37+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-08-13T08:37:40+00:00\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/#article\",\"name\":\"Debugging Capybara: screenshot of error page on CircleCI | Railsware Blog\",\"headline\":\"Debugging Capybara: screenshot of error page on CircleCI\",\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/11\\\/Debugging-Capybara.png\",\"width\":360,\"height\":360,\"caption\":\"Debugging Capybara: screenshot of error page on CircleCI\"},\"datePublished\":\"2015-11-12T16:48:37+03:00\",\"dateModified\":\"2021-08-13T11:37:40+03:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/#webpage\"},\"articleSection\":\"Engineering\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"position\":2,\"name\":\"Engineering\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/#listItem\",\"name\":\"Debugging Capybara: screenshot of error page on CircleCI\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/#listItem\",\"position\":3,\"name\":\"Debugging Capybara: screenshot of error page on CircleCI\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Logo-circle.png\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/#organizationLogo\",\"width\":3137,\"height\":1054,\"caption\":\"Railsware logo\"},\"image\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/#author\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/\",\"name\":\"Sergii Boiko\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/#authorImage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/sergii-boiko-96x96.jpg\",\"width\":96,\"height\":96,\"caption\":\"Sergii Boiko\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/#webpage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/\",\"name\":\"Debugging Capybara: screenshot of error page on CircleCI | Railsware Blog\",\"description\":\"Having real screenshot of a failed integration spec can save hours of debugging. We had screenshot with error on the local development environment, and wanted to have it on Continuous Integration server. Luckily for us, it's a real no-brainer, if you use CircleCI. There is no need for custom S3 upload or some additional services.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/11\\\/Debugging-Capybara.png\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/#mainImage\",\"width\":360,\"height\":360,\"caption\":\"Debugging Capybara: screenshot of error page on CircleCI\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/debugging-capybara-screenshot-of-error-page-on-circleci\\\/#mainImage\"},\"datePublished\":\"2015-11-12T16:48:37+03:00\",\"dateModified\":\"2021-08-13T11:37:40+03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Debugging Capybara: screenshot of error page on CircleCI | Railsware Blog","description":"Having real screenshot of a failed integration spec can save hours of debugging. We had screenshot with error on the local development environment, and wanted to have it on Continuous Integration server. Luckily for us, it's a real no-brainer, if you use CircleCI. There is no need for custom S3 upload or some additional services.","canonical_url":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/#article","name":"Debugging Capybara: screenshot of error page on CircleCI | Railsware Blog","headline":"Debugging Capybara: screenshot of error page on CircleCI","author":{"@id":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/#author"},"publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2015\/11\/Debugging-Capybara.png","width":360,"height":360,"caption":"Debugging Capybara: screenshot of error page on CircleCI"},"datePublished":"2015-11-12T16:48:37+03:00","dateModified":"2021-08-13T11:37:40+03:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/#webpage"},"isPartOf":{"@id":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/#webpage"},"articleSection":"Engineering"},{"@type":"BreadcrumbList","@id":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/railsware.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","position":2,"name":"Engineering","item":"https:\/\/railsware.com\/blog\/category\/development\/","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/#listItem","name":"Debugging Capybara: screenshot of error page on CircleCI"},"previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/#listItem","position":3,"name":"Debugging Capybara: screenshot of error page on CircleCI","previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}}]},{"@type":"Organization","@id":"https:\/\/railsware.com\/blog\/#organization","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","url":"https:\/\/railsware.com\/blog\/","logo":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2020\/11\/Logo-circle.png","@id":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/#organizationLogo","width":3137,"height":1054,"caption":"Railsware logo"},"image":{"@id":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/#author","url":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/","name":"Sergii Boiko","image":{"@type":"ImageObject","@id":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/#authorImage","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2021\/06\/sergii-boiko-96x96.jpg","width":96,"height":96,"caption":"Sergii Boiko"}},{"@type":"WebPage","@id":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/#webpage","url":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/","name":"Debugging Capybara: screenshot of error page on CircleCI | Railsware Blog","description":"Having real screenshot of a failed integration spec can save hours of debugging. We had screenshot with error on the local development environment, and wanted to have it on Continuous Integration server. Luckily for us, it's a real no-brainer, if you use CircleCI. There is no need for custom S3 upload or some additional services.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/railsware.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/#breadcrumblist"},"author":{"@id":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/#author"},"creator":{"@id":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2015\/11\/Debugging-Capybara.png","@id":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/#mainImage","width":360,"height":360,"caption":"Debugging Capybara: screenshot of error page on CircleCI"},"primaryImageOfPage":{"@id":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/#mainImage"},"datePublished":"2015-11-12T16:48:37+03:00","dateModified":"2021-08-13T11:37:40+03:00"},{"@type":"WebSite","@id":"https:\/\/railsware.com\/blog\/#website","url":"https:\/\/railsware.com\/blog\/","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","inLanguage":"en-US","publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"| Blog on Engineering, Product Management, Transparency, Culture and many more...","og:type":"article","og:title":"Debugging Capybara: screenshot of error page on CircleCI | Railsware Blog","og:description":"Having real screenshot of a failed integration spec can save hours of debugging. We had screenshot with error on the local development environment, and wanted to have it on Continuous Integration server. Luckily for us, it's a real no-brainer, if you use CircleCI. There is no need for custom S3 upload or some additional services.","og:url":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/","og:image":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2015\/11\/Debugging-Capybara.png","og:image:secure_url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2015\/11\/Debugging-Capybara.png","og:image:width":360,"og:image:height":360,"article:published_time":"2015-11-12T13:48:37+00:00","article:modified_time":"2021-08-13T08:37:40+00:00"},"aioseo_meta_data":{"post_id":"7480","title":null,"description":null,"keywords":[],"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":{"id":"aioseo-article-6386167ce9863","slug":"article","graphName":"Article","label":"Article","properties":{"type":"BlogPosting","name":"#post_title","headline":"#post_title","description":"#post_excerpt","image":"","keywords":"","author":{"name":"#author_name","url":"#author_url"},"dates":{"include":true,"datePublished":"","dateModified":""}}},"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":"{\"article\":{\"articleType\":\"BlogPosting\"},\"course\":{\"name\":\"\",\"description\":\"\",\"provider\":\"\"},\"faq\":{\"pages\":[]},\"product\":{\"reviews\":[]},\"recipe\":{\"ingredients\":[],\"instructions\":[],\"keywords\":[]},\"software\":{\"reviews\":[],\"operatingSystems\":[]},\"webPage\":{\"webPageType\":\"WebPage\"}}","pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":{"locations":{"business":{"name":"","businessType":"","image":"","areaServed":"","urls":{"website":"","aboutPage":"","contactPage":""},"address":{"streetLine1":"","streetLine2":"","zipCode":"","city":"","state":"","country":"","addressFormat":"#streetLineOne\n#streetLineTwo\n#city, #state #zipCode"},"contact":{"email":"","phone":"","phoneFormatted":"","fax":"","faxFormatted":""},"ids":{"vat":"","tax":"","chamberOfCommerce":""},"payment":{"priceRange":"","currenciesAccepted":"","methods":""}}},"openingHours":{"useDefaults":true,"show":true,"alwaysOpen":false,"use24hFormat":false,"timezone":"","labels":{"closed":"","alwaysOpen":""},"days":{"monday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"tuesday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"wednesday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"thursday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"friday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"saturday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"sunday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"}}}},"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-01-04 12:44:30","updated":"2025-09-26 11:22:39","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/railsware.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/railsware.com\/blog\/category\/development\/\" title=\"Engineering\">Engineering<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tDebugging Capybara: screenshot of error page on CircleCI\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/railsware.com\/blog"},{"label":"Engineering","link":"https:\/\/railsware.com\/blog\/category\/development\/"},{"label":"Debugging Capybara: screenshot of error page on CircleCI","link":"https:\/\/railsware.com\/blog\/debugging-capybara-screenshot-of-error-page-on-circleci\/"}],"categories_data":[{"name":"Engineering","link":"https:\/\/railsware.com\/blog?category=development"}],"post_thumbnails":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2015\/11\/Debugging-Capybara.png","article_background":"","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/7480","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/comments?post=7480"}],"version-history":[{"count":20,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/7480\/revisions"}],"predecessor-version":[{"id":14027,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/7480\/revisions\/14027"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media\/9432"}],"wp:attachment":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media?parent=7480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/categories?post=7480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/tags?post=7480"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/coauthors?post=7480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}