{"id":6181,"date":"2017-06-13T15:16:57","date_gmt":"2017-06-13T19:16:57","guid":{"rendered":"https:\/\/qxf2.com\/blog\/?p=6181"},"modified":"2018-04-02T10:34:57","modified_gmt":"2018-04-02T14:34:57","slug":"qxf2-open-sourced-gui-automation-framework","status":"publish","type":"post","link":"https:\/\/qxf2.com\/blog\/qxf2-open-sourced-gui-automation-framework\/","title":{"rendered":"Qxf2 has open sourced a Python-based automation testing framework"},"content":{"rendered":"<p>We have open-sourced our test automation framework. You can now write Selenium and Appium tests in Python using the Page Object pattern. Our Pythonic web, mobile and REST API test automation framework will help you get started with QA automation quickly. It comes with many useful integrations like &#8211; email, Slack, TestRail, BrowserStack, Sauce Labs, etc. <\/p>\n<p>You can find it over here:<\/p>\n<p><a href=\"https:\/\/github.com\/qxf2\/qxf2-page-object-model\">https:\/\/github.com\/qxf2\/qxf2-page-object-model<\/a><\/p>\n<hr>\n<p>We have written several popular posts about our GUI automation using Python. But we have never had a chance to share our entire GUI automation code base until now. This framework has let us quickly implement both web and mobile automation for our clients. In most cases, we have GUI automation setup and going within the first week of our engagement. We hope you find it equally useful too.<\/p>\n<p>The automation framework is written in Python and follows the <a href=\"https:\/\/qxf2.com\/blog\/category\/page-object-model\/\">Page Object pattern<\/a>. We have written robust and intuitive wrappers around <a href=\"http:\/\/appium.io\">Appium<\/a> and <a href=\"http:\/\/www.seleniumhq.org\">Selenium<\/a>. We use <a href=\"https:\/\/docs.pytest.org\/en\/latest\/\">pytest<\/a> as our test runner and you get a decent pytest configuration right out of the box. The framework has excellent built-in debug capabilities like verbose logging and intelligent screenshots. We also have some useful utility scripts to check emails, run the automation on <a href=\"https:\/\/www.browserstack.com\">BrowserStack<\/a> or <a href=\"https:\/\/saucelabs.com\">Sauce Labs<\/a> and report results to <a href=\"http:\/\/www.gurock.com\/testrail\/\">TestRail<\/a>.<\/p>\n<p>The framework is always going to be work in progress. We update the framework as and when we learn something new or figure out something useful at our clients. We also plan to add the code we use for API automation. So watch the <a href=\"https:\/\/github.com\/qxf2\/qxf2-page-object-model\">Github project<\/a> to get all our updates.<\/p>\n<hr>\n<h3>How to use the web, mobile and REST API automation testing framework<\/h3>\n<p>Pull the code from Github. The readme file has detailed notes on how to get setup and run the tests. You can get setup in 5 easy steps. It&#8217;s that simple! Hopefully, you find the code and patterns intuitive too. Several engineers at our clients have managed to use and enhance the framework without any additional help.<\/p>\n<hr>\n<h3>Want to contribute?<\/h3>\n<p>Want to contribute to our project? Send an email to mak@qxf2.com with your Github account.<\/p>\n<hr>\n<p>We&#8217;ll follow up with posts that show you how to write tests from scratch.  In the meantime, if you have any questions, feel free to ask them in the comments below. Team Qxf2 will be happy to help you.<\/p>\n<p><strong>If you are a startup finding it hard to hire technical QA engineers, learn more <a href=\"https:\/\/qxf2.com\/blog\/about-qxf2\/\">about Qxf2 Services<\/a>.<\/strong><\/p>\n<hr>\n<script>(function() {\n\twindow.mc4wp = window.mc4wp || {\n\t\tlisteners: [],\n\t\tforms: {\n\t\t\ton: function(evt, cb) {\n\t\t\t\twindow.mc4wp.listeners.push(\n\t\t\t\t\t{\n\t\t\t\t\t\tevent   : evt,\n\t\t\t\t\t\tcallback: cb\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n})();\n<\/script><!-- Mailchimp for WordPress v4.10.1 - https:\/\/wordpress.org\/plugins\/mailchimp-for-wp\/ --><form id=\"mc4wp-form-1\" class=\"mc4wp-form mc4wp-form-6165 mc4wp-form-theme mc4wp-form-theme-blue\" method=\"post\" data-id=\"6165\" data-name=\"Newsletter\" ><div class=\"mc4wp-form-fields\"><div style=\"border:3px; border-style:dashed;border-color:#56d1e1;padding:1.2em;\">\r\n  <h1 style=\"text-align: center; padding-top: 20px; padding-bottom: 20px; color: #592b1b;\">Subscribe to our weekly Newsletter<\/h1>\r\n  <input style=\"margin: auto;\" type=\"email\" name=\"EMAIL\" placeholder=\"Your email address\" required \/>\r\n  <br>\r\n  <p style=\"text-align: center;\">\r\n    <input style=\"background-color: #890c06 !important; border-color: #890c06;\" type=\"submit\" value=\"Sign up\" \/>\r\n    \r\n  <\/p>\r\n  <p style=\"text-align: center;\">\r\n    <a href=\"http:\/\/mailchi.mp\/c9c7b81ddf13\/the-informed-testers-newsletter-20-oct-2017\"><small>View a sample<\/small><\/a>\r\n  <\/p>\r\n  <br>\r\n<\/div><\/div><label style=\"display: none !important;\">Leave this field empty if you're human: <input type=\"text\" name=\"_mc4wp_honeypot\" value=\"\" tabindex=\"-1\" autocomplete=\"off\" \/><\/label><input type=\"hidden\" name=\"_mc4wp_timestamp\" value=\"1776200491\" \/><input type=\"hidden\" name=\"_mc4wp_form_id\" value=\"6165\" \/><input type=\"hidden\" name=\"_mc4wp_form_element_id\" value=\"mc4wp-form-1\" \/><div class=\"mc4wp-response\"><\/div><\/form><!-- \/ Mailchimp for WordPress Plugin -->\n<hr>\n","protected":false},"excerpt":{"rendered":"<p>We have open-sourced our test automation framework. You can now write Selenium and Appium tests in Python using the Page Object pattern. Our Pythonic web, mobile and REST API test automation framework will help you get started with QA automation quickly. It comes with many useful integrations like &#8211; email, Slack, TestRail, BrowserStack, Sauce Labs, etc. You can find it [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[50,38,47,18,30],"tags":[137],"class_list":["post-6181","post","type-post","status-publish","format-standard","hentry","category-appium","category-automation","category-mobile","category-python","category-selenium","tag-python-page-object"],"_links":{"self":[{"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/posts\/6181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/comments?post=6181"}],"version-history":[{"count":14,"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/posts\/6181\/revisions"}],"predecessor-version":[{"id":15593,"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/posts\/6181\/revisions\/15593"}],"wp:attachment":[{"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/media?parent=6181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/categories?post=6181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qxf2.com\/blog\/wp-json\/wp\/v2\/tags?post=6181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}