Automating the iOS Springboard with Appium

     Sometimes we want to automate an iOS device, but don’t want to automate any app in particular, or want to start from the Home Screen as part of a multi-app flow, or simply want to automate a set of built-in apps the way a user would approach things. In this case, it’s actually possible to start an Appium iOS session without a specific application. To do this we make use of the concept of the iOS Springboard, which is essentially another word for the home screen. The Springboard is essentially an application, though it is one that can’t be terminated. As an “app”, it has its own bundle ID: com.apple.springboard. So we can actually use this to start an Appium session without referring to any real application in particular:

capabilities.setCapability(“app”, “com.apple.springboard”);

     On its own, however, this isn’t going to work, because Appium will try to launch this app, and deep in the XCUITest code related to app launching is some logic that makes sure the app is terminated before launch. As mentioned earlier, the Springboard can’t be terminated, so trying to start an Appium session this way will lead to a hanging server. What we can do is include another capability, autoLaunch, and set it to false, which tells Appium not to bother with initializing and launching the app, but just to start a session and give back control immediately:

capabilities.setCapability(“autoLaunch”, false);

     At this point, starting an Appium session in this way will drop you at the Springboard. It won’t necessarily drop you at any particular page of the Springboard, however. If you are an iOS user, you will know that the Home Screen is really a whole set of screens, depending on how many apps you have and how you have organized them. One of the main things you would want to do from the home screen is find and interact with an icon for a given app. We will see, how can we do this,

 Let’s imagine that below is our test method implementation,

@Test
public void testSpringboard() {
wait.until(AppIconPresent(“FaceTime”)).click();
pressHome();
wait.until(AppIconPresent(“Camera”)).click();
pressHome();
}

     Here we have created a custom expected condition called AppIconPresent, which takes the app icon text, and will attempt to find that icon, navigating through the different pages of the Springboard if the icon is not already present. This is actually conceptually a bit tricky, because of how the Springboard app is implemented. No matter how many pages you have in your Springboard, all pages show up within the current UI hierarchy. This means it is easy to find an icon for an app even if it’s not on the currently-displayed page. However, if you try to tap that icon, it will not work because the icon is not actually visible. So, we need some way of figuring out how to move to the correct page before tapping. Let’s see the the implementation of AppIconPresent below:

protected ExpectedCondition AppIconPresent(final String appName) {
pressHome();
currPage = 1;
return new ExpectedCondition() {
@Override
public WebElement apply(WebDriver driver) {
try {
return driver.findElement(By.xpath(
“//*[@name=’Home screen icons’]” +
“//XCUIElementTypeIcon[” + currPage+ “]” +
“/XCUIElementTypeIcon[@name='” + appName + “‘]”
));
} catch (NoSuchElementException err) {
swipeToNextScreen();
currPage+= 1;
throw err;
}
}
};
}

     The first thing we do is call our pressHome helper method which is just another method implemented in the current class. Below is the implementation:

protected void pressHome() {
driver.executeScript(“mobile: pressButton”, ImmutableMap.of(“name”, “home”));
}

     What calling pressHome here does is ensure that we are always on the first page of the Springboard. Then, we set a class field to define what page we are on. We initialize it to 1, because after pressing the home button, we know we are on the first page. Then, in our actual condition check implementation, we try to find an icon that has the name we have been given to find.

     Here is the tricky part, we don’t want to just find any icon that has the correct name because then we would find the icon even if it’s not on the current page. We only want to find an icon on the current page and then swipe to the next page if we can’t find it. To do that, we take advantage of a fact about Springboard’s UI hierarchy, which is that each page is actually coded up as an XCUIElementTypeIcon, which contains the actual app icons as children. So we can write an XPath query that restricts our search to the XML nodes corresponding to the current page. If we are unable to find an icon on the current page, we call another helper method, swipeToNextScreen. Below is the simple implementation that just performs a swipe from an area near the right edge of the screen over to the left:

protected void swipeToNextScreen() {
swipe(0.9, 0.5, 0.1, 0.5, Duration.ofMillis(750));
}

     Once we have swiped to the next screen, we increment our page counter because we have now moved to the next screen. We are relying on the assumption that we will eventually find the app by the time we reach the last page, because we don’t have any logic to detect whether our swipeToNextScreen was actually successful. In general, AppIconPresent is a great example of a useful custom expected condition that has a side effect. We build it into an expected condition so we can use it flexibly with the WebDriverWait interface, and so we don’t need to write any of the looping or retry logic ourselves.

     This is all about automation iOS Springboard with Appium. I hope you really enjoyed to read and learn this automation workflow. Please try to utilize this reusable utility in your iOS automation flow wherever you need it.

Reference: Appium Pro

make it perfect!

API Test Reporting

     We all know that Postman is a great tool when trying to dissect RESTful APIs made by others or test ones you have made yourself. It offers a sleek user interface with which to make HTML requests, without the hassle of writing a bunch of code just to test an API’s functionality. This tool has many HTTP requests methods like GET, POST, PUT, PATCH, DELETE etc., and also it support to write the test cases to validate the response code, response body data, headers etc.,

     In this article, I would like to share the concept of different requests and different assertions that I have created using Postman. Also discussing the important part of test execution and reporting. I have created API requests with GET, POST, PUT, PATCH and DELETE methods inside a collection in Postman. In each request, added the validations to check the the response code and response body. Following are some sample test validations that I have created:

pm.test(“Verify status code is 200”, function () {
pm.response.to.have.status(200);
});

pm.test(“Verify user updated”, function () {
pm.expect(pm.response.text()).to.include(“morpheus”);
pm.expect(pm.response.text()).to.include(“zion resident”);
});

Execute Collections from Postman

     Once completed the HTTP requests and scripting under particular collection, next you can execute your collection. Here, I have created TestPOC collection and added all the requests under this collection,

     You can click on the |->icon right to your collection name and select Run to get the Collection Runner window or you have to click Runner button at top below to the menu in Postman window to get the Collection Runner window.

     In the Collection Runner window, you can see the selected collection and also the selected requests in the run order. In this window, you can set the iterations, delay to start the execution of each requests criteria. Once all set you can click on Run <your_collection_name> here Run TestPOC button to start the execution and after few seconds you will get the results in Run Results section as below,

     In the Run Results, you can see the total pass, fail, details of requests, assertions. You can also export this results in JSON format. In this case, I intentionally failed one case to see it in the results. This method of executing collections from Postman is pretty straightforward. But I have a thought of effortlessly run and test a Postman collection directly from the command-line, also generate some good HTML report with test execution details. We will see how can achieve the execution of Postman collections via command-line and also generate the HTML reports.

Execute Collections from Command-line

     Command-line execution is possible with help of newman package. Newman is a command-line collection runner for Postman. It allows effortless execution and test a Postman collection directly from the command-line. It is built with extensibility in mind so that you can easily integrate it with your continuous integration servers and build systems. Before using this package, you need to install it using npm, use the below command in your command prompt to install newman,

npm install -g newman

     Once you are ready with newman installed, next you can export your collection from Postman and it will be in the JSON format (I got the file in the name as TestPOC.postman_collection.json). Save the JSON file in a location you can access with your terminal and navigate to the path. Once you are in the directory execute below command replacing the collection_name with the name you used to save the collection,

newman run collection_name.json

You will get the results like below,

     In the command-line output, you can see the API requests details, assertion status, table view with executed and failed. You can also be iterated for the respective no# of times using below command,

newman run collection_name.json -n <count>

     Next we will see how the newman can generate HTML reports. Newman provides a different execution report of the collections in formats (like HTML, JSON). But, the accurate way to present execution status to the customer is HTML instead of JSON. To do this need to add HTML reporter for Newman using the following command,

npm install -g newman-reporter-html

     Once the newman-reporter-html installed, you can run and generate HTML report using following command,

newman run postman_collection.json -r html

     Once the execution of above command complete, the HTML report will generate in the newman directory where your collection JSON exists. The file name like newman-run-report-<date_time>. In this report, you can see the details of iterations, requests, total scripts, failed, execution duration, failures with details. Below is an excerpt of the report,

     To have the report more user-friendly, we have another a powerful tool called HTML Extra reporter that generates beautiful reports. Also makes it possible to have an overview of all test runs, and also we have description feature available for collections, folders and requests. To do this we need to add HTML Extra reporter for Newman using the following command,

npm install -g newman-reporter-htmlextra

     Once the newman-reporter-htmlextra installed, you can run and generate user-friendly HTML report using following command,

newman run postman_collection.json -r htmlextra

     Once the execution of above command complete, the HTML report will generate in the newman directory where your collection JSON exists. The file name like <your_collection_name-date_time>. Below is an excerpt of the report,

     There is also global information about the request, response, test pass, test fail information,

     I hope you really enjoyed to read this article and definitely got some idea on Postman collection execution from Postman tool and from the command-line with help of newman. Also, you got some understanding of the HTML report generation for the API collections. Try to implement this concepts in your Postman API testing activities for a better reporting.

make it perfect!

Retrieving Clipboard Text from a Real iOS Device

     We saw that in most of the mobile application have the feature of showing a pop-over layout with Copy URL or Copy Link, so this is an easiest way to copy the details from clipboard and share with required fields. We will how it can be done in real iOS devices using Appium’s capability. If we were working with an iOS simulator or an Android device, the solution would be simple: we could use driver.getClipboardText and we already discussed in my one of previous article. But driver.getClipboardText method is not available for real iOS device. In this article, we will see how can we retrieve the clipboard text from a real iOS device.

Pasting and Reading the Value

     The main thing to decide when using this technique is: where should we paste the clipboard contents? We want a place where we can have a straightforward automation path to being able to paste, and we want to make sure that existing text or content doesn’t get in the way. For this reason, we chose the Notes application as a good place to paste, because:

  • When you launch the Notes app, no matter where you are, you have the ability to create a new (blank) note with one tap.
  • The Notes app has one main text field, whose contents Appium has access to.

The flow we need to implement to make this happen in more detail looks like this:

  1. Get the data into the clipboard (get data like Copy URL).
  2. Activate the Notes app.
  3. Create a new blank note.
  4. Paste the clipboard.
  5. Find the element containing the pasted contents.
  6. Read the text from that element.

     If we can do all these things, we will have the value of the iOS real device clipboard in our test script, and can then do whatever we want with it. So let’s have a look at the implementation,

// open up the notes app (this only exists on a real device)
driver.activateApp(NOTES_BUNDLE_ID);

// create a new blank note
wait.until(ExpectedConditions.presenceOfElementLocated(NEW_NOTE)).click();

// tap the note field to bring up the ‘paste’ button
WebElement note = wait.until(ExpectedConditions.presenceOfElementLocated(NOTE_CONTENT));
note.click();

// paste the content
wait.until(ExpectedConditions.presenceOfElementLocated(PASTE)).click();

// retrieve the content and do something with it
System.out.println(“Clipboard text was: ” + note.getText());

     One thing to keep in mind is that if there is rich content in the clipboard (a URL, image, etc…), it will be pasted as its own element or set of elements within the note. In that case, you will need to find that element instead of the main note element when retrieving content.

     I hope the above workflow logic will help you to get the clipboard text and transfer the text into different fields in your application during your automation on real iOS devices.

Reference: Appium Pro

make it perfect!

Generate and Validate Selectors using SelectorsHub

     SelectorsHub is the next generation XPath tool to generate, write and validate the XPath and CSS selectors. SelectorsHub auto suggests all attributes, text and everything to complete Selectors like XPath and CSS selectors in less than 5 seconds. Now we need not to copy and paste attribute values from DOM anymore to build XPath and CSS selector. It also suggests siblings, parents, child nodes, ancestors and descendants etc. It gives the proper error message for invalid syntax like what is missing in selector. It also supports shadow DOM, iframe and SVG elements. Generate all possible selectors and much more. Also, it provides the feature of quick copy paste the relative XPath view context menu.  In this article, we will discuss features of SelectorsHub, SelectorsHub extensions and how to use SelectorsHub.

 Features of SelectorsHub
  • Generate all types of possible selectors in single click.
  • Copy XPath, CSS selector and JS path from the context menu itself. No need to open DevTools and SelectorsHub tab anymore.
  • Feature to disable and enable SelectorsHub in contextMenu.
  • It gives robust unique relative CSS selector and XPath.
  • It suggests all possible XPath and CSS selector functions while typing like smart editor along with their occurrences to complete Selectors quickly. Now you need not to copy and paste attribute values from DOM anymore to build XPath and CSS selector.
  • It also supports ShadowDOM, iframe, frame and SVG elements.
  • It gives the proper error message like what is wrong in your XPath and CSS selector.
  • SelectorsHub automatically suggests tagName, all attributes with value and everything to complete Selectors quickly. Just type // and it will suggest the right syntax. It also gives the index based XPath in auto suggest.
  • It has the feature to generate selector with the desired attribute.
  • You can also generate selectors with driver command.
  • You can customize the UI as you want.
  • All the configuration will be saves in local so next time when you open it, it open with your configurations.
  • To copy the Selector’s value, just click on the Selector’s Header. For example to copy Relative XPath, click on Relative XPath.
  • To edit Selector’s value, just click on selector’s value, it will put the value in box where you can edit it and verify.
SelectorsHub extensions for different browsers
How to use SelectorsHub?
  1. Open DevTools on your browser.
  2. On the right side, the last sidebar tab is SelectorsHub. Click on it.
  3. Here it show all possible selectors for inspected element. For whichever element you want to generate selector, just inspect that and it will generate all possible selectors for that element.
  4. To build your own XPath or CSS selector, start typing in the selector input box.
  5. SelectorsHub will automatically suggest all attributes and everything to complete Selectors quickly. Now you need not to copy and paste attribute values anymore. With this you can save a huge amount of time.
  6. After typing just press enter.
  7. It will highlight all matching nodes and list down them in the SelectorsHub tab.
  8. It will also scroll the web element to the viewable area.
  9. To copy the selectors value, click on the copy icon.
  10. To edit selector value, click on that selector value.
SelectorsHub dealing iFrame, SVG elements, ShadowDOM

      We will see how the SelectorsHub dealing with iFrame or frame, SVG elements and ShadowDOM.

iFrame support
  • Just inspect the element if it will be inside iframe, it will show in frame in the SelectorsHub tab.
  • To write the XPath/CSS selector for any element which is inside an iframe, just inspect that element and start typing.
  • To verify any selector (XPath or CSS selector) inside an iframe, first inspect any element inside that iframe in which you want to verify your selector then verify your selector.
SVG element support

      As we all know that SVG elements doesn’t support the standard XPath pattern. So most of the times we struggle while writing the XPath for SVG elements. But now SelectorsHub has solved this problem. You just type // and it will suggest the correct syntax and you can build XPath without wasting anytime.

ShadowDOM support
  • ShadowDOM supports only the CSS selector and it doesn’t support XPath.
  • Just inspect the element if it will be inside shadowDOM, it will show in ShadowDOM in the SelectorsHub tab.
  • To write the CSS selector for any element which is inside shadowDOM, just inspect that element and start typing.
  • To verify any CSS selector inside a shadowDOM, first inspect any element inside that shadowDOM in which you want to verify your CSS selector.

      I hope you really enjoyed to read this article. Also, learned the concept and use of SelectorsHub free CSS selector, XPath and timesaver tool. You can install this tool in your desired browser as an extension and start inspect strong element locators for your selenium automation script.

Reference: SelectorsHub

make it perfect!

23 CI/CD Tools

      CI/CD is one of the best practices for DevOps teams to implement. It is also an agile methodology best practice, as it enables software development teams to focus on meeting business requirements, code quality, and security because deployment steps are automated. In this article, we will discuss various 23 CI/CD tools and their features in brief.

1. Jenkins

Jenkins is the leading open-source automation server and also Continuous Integration tool. Built with Java, it provides over 1,700 plugins to support automating virtually anything. Jenkins allows seamless, ongoing development, testing, and deployment of newly created code. Continuous Integration is a process wherein developers commit changes to source code from a shared repository, and all the changes to the source code are built continuously. This can occur multiple times daily. Each commit is continuously monitored by the CI Server, increasing the efficiency of code builds and verification. This removes the tester’s burdens, permitting quicker integration and fewer wasted resources. Some of the key features of Jenkins includes:

  • Jenkins is a platform-agnostic, self-contained Java-based program, ready to run with packages for Windows, Mac OS, and Unix-like operating systems.
  • Jenkins is easily set up and configured using its web interface, featuring error checks and a built-in help function.
  • There are thousands of plugins available in the Update Center, integrating with every tool in the CI and CD toolchain.
  • Jenkins can be extended by means of its plugin architecture, providing nearly endless possibilities for what it can do.
  • Jenkins can easily distribute work across multiple machines for faster builds, tests, and deployments across multiple platforms.
  • Jenkins is an open-source resource backed by heavy community support.

2. GitLab

GitLab CI/CD tool is a part of GitLab and a powerful alternative to Jenkins. It is an open-source web interface that can be used to apply all the continuous methods like integration, delivery, and deployment to your project without any third-party application. It provides a user-friendly interface along with distributed version control services. Some of the top features that make it one of the best alternatives to Jenkins are:

  • Just like Jenkins, it is an open-source tool too.
  • You can test your build in parallel, thereby reducing time.
  • It allows docker integration and helps in automating release and application delivery.
  • It provides better support.

See how to Build An Automated Testing Pipeline With GitLab CI/CD

3. Atlassian Bamboo

Bamboo is a product of Atlassian, and it’s a useful tool for continuous integration, development, and deployment. It runs builds and tests and efficiently integrates with JIRA to update issues and commits and connect test results for an end to end visibility within the team. It supports multiple technologies like AWS, Amazon S3 buckets, Git, SVN, Mercurial, etc. Some of the key features of Bamboo includes:

  • It can be used to run parallel batch tests.
  • It provides seamless integration with JIRA, BitBucket, and Fisheye.
  • It is effortless to set up.

4. CircleCI

CircleCI is a flexible tool with easy maintenance and can run in almost any environment. Every commit leads to automatic build execution. To add to it, if any new build is triggered, any queued or running build is automatically canceled. Besides, it provides features like:

  • Integration with GitHub, Bitbucket, and GitHub Enterprise.
  • It splits tests among multiple containers, thereby reducing build time.
  • It provides SSH support so that users can access the Virtual Machine via SSH and run commands.
  • Very easy to maintain as it allows for automatic upgrades.

5. TeamCity

TeamCity is also known as the “Intelligent CI Server” because of its ease of use and integration. It offers different installation packages for different operating systems. It is a powerful tool developed from JetBrains, which allows building, and running tests even before changes are committed, hence keeping the code clean. Some of its features that make it one of the best Jenkins alternatives are:

  • It is well documented and provides easy installation.
  • It provides integration with tools like Docker, JIRA, etc.
  • It offers well-defined APIs available for extension.

6. Travis CI

Travis CI is a continuous integration and testing CI/CD tool. It is free of cost for open source projects and provides seamless integration with GitHub. It supports more than 20 languages, like Node.js, PHP, Python, etc. along with Docker. Some of the key features of Travis CI includes:

  • Very easy to set up with broad user community support.
  • No project is merged before tests are passed successfully.
  • You can easily customize the build environment as per your requirements.

7. BuildMaster

BuildMaster by Inedo is one of the best Jenkins alternatives that offers continuous integration on different platforms. With BuildMaster, you can manage your apps and deploy them to the environment without any hassle. Moreover, it doesn’t require extensive expertise to set up the pipelines. Some of its features include:

  • Create release management platforms that can be self-managed.
  • Automated gates prevent the release of untested software.

8. Bitrise

Bitrise comes as a platform as a service (PaaS) for continuous integration and continuous delivery in mobile applications. Each build runs on its virtual machine, and at the end of the build, the data is scrapped. It offers a free plan and allows integration with services like Slack, HockeyApp, etc. Also, it provides features like:

  • Apps are delivered without any manual intervention.
  • It integrates with major third-party testing and deployment services.
  • It allows quick setup having service integration with a lot of services.

9. Spinnaker

Spinnaker is an open-source platform developed by Netflix for continuous delivery. It is powerful and provides integration with major cloud providers. It supports multiple hosting technologies like Docker, Kubernetes, etc. It is useful for cloud-focused approaches. Some of the key features of Spinnaker includes:

  • Powerful and flexible pipeline management system.
  • It provides integrations to the major cloud providers like Google Cloud Platform, AWS, Microsoft Azure, and Oracle Cloud.

10. UrbanCode

An IBM product, UrbanCode, is a continuous integration application that provides multiple features like visibility, traceability, and auditing bundled in a single package. It enables you to deliver applications faster. Irrespective of the environment, you can quickly deploy applications to data centers, cloud, or virtual environments with no error. Some of its features that make it a preferred Jenkins alternative are:

  • It minimizes deployment errors.
  • Drag and drop feature in the editor makes it convenient to use.
  • Increased frequency to deliver applications.

11. Buddy

Buddy, also known as Buddy Works, is a continuous integration and delivery software with an interactive user interface, making for a perfect Jenkins alternative. It helps to build, test, and deploy applications faster quickly. You can get your CI/CD pipeline running in just a few minutes’ configurations. Besides, it provides feature like:

  • It offers on-premise solutions.
  • It provides support for multiple languages.
  • One can customize the build and test environment as per requirements.

12. Drone

Drone is considered one of the best Jenkins alternatives when it comes to integrating and deploying for busy development teams. It is a continuous self-service integration and delivery platform. It provides you the ability to customize multiple features on the go. It integrates easily with GitHub, GitLab, Bitbucket, and GitHub Enterprise. Some of its top features include:

  • It supports multiple languages and operating systems.
  • It provides plugins for pre-configured steps.
  • Every build is executed in an isolated container.
  • It provides auto-scaling with a single binary file.

13. AWS CodePipeline

AWS CodePipeline is a continuous integration and continuous delivery service that easily and quickly automates your release pipelines for updates. Every time you change the code, AWS CodePipeline will build, test, and deploy your application. Also, it can be easily integrated with GitHub. Some of its features that make it an ideal Jenkins alternative are:

  • Follows the pay for what you use approach. You need not block your money or pay any fees. You only pay for what you are using.
  • It provides a workflow that can be configured as per your release stages.
  • It offers parallel execution, thereby increasing the workflow speed.

14. CruiseControl

CruiseControl is a continuous integration tool, and it provides a framework that can be extended to create customized build processes. Though written in Java, it can be used in different projects with the help of builders provided by it. It can integrate with different source control systems. Some of the key features of CruiseControl includes:

  • Provide remote management support.
  • You can build multiple projects on a single server.
  • Provides email and messaging notifications.

15. Integrity

Integrity is a continuous integration server that builds your code and runs your test as soon as a commit happens. A report is then generated, and the users or the team is notified. The only limitation is that it can be used only with GitHub but can be mirrored with other SCM. Some of its features include:

  • It supports multiple notification mechanisms.
  • It works fine with GitHub Repos, public and private.

16. Shippable

Shippable provides an easy way to set up continuous integration and delivery for applications. It optimizes DevOps operations and provides ready-to-use build images. It provides analytics to help you improve. It also offers machine-level isolation to secure the workflows. Some of the key features of Shippable includes:

  • Enable Continuous Improvement with rich analytics and insights.
  • Secures your workflows with Role-Based Access Control (RBAC)

17. CodeShip

CodeShip is a hosted continuous integration and continuous delivery platform found by CloudBees. It provides fast feedback and customized environments to build applications. It provides integration with almost anything and is good at helping you scale as per your needs. It comes free for up to 100 monthly builds. Besides, it provides feature like:

  • Parallel execution for fast feedback and minimum to no wait times.
  • Easy to configure.
  • It provides support for headless browsers.

18. Buildkite

Buildkite enables you to run continuous integration pipelines on your infrastructure. It provides fast and secure integration. It allows you to run multiple builds with maximum control. It has an interface that provides visibility of your pipelines, which you can monitor. Some of its features include:

  • It provides unlimited language support.
  • It provides chat support for quick resolutions.
  • It offers easy integration with tools like Slack, HipChat, etc.

19. GoCD

GoCD comes as a continuous open-source integration and continuous delivery server with an end-to-end map showing the path to production in a single view. You can integrate it with popular environments like Kubernetes, Docker, and many more. It has advanced features of traceability wherein you can easily debug a broken pipeline. Some of its features that make it a capable Jenkins alternative are:

  • It has a great support community.
  • Easy to upgrade even when plugins are integrated.
  • It provides fast feedback.

20. Semaphore CI

Semaphore provides you features for continuous integration and delivery by removing technical challenges. You need not depend on hiring staff specifically for deployments. You only need to define a workflow, and there you go with building a great application. Some of the main features of Semaphore CI includes:

  • It provides flexible pipelines for complex projects.
  • It offers parallel testing for faster movement.
  • Debugging capabilities for quick resolutions.

21. Microtica

Microtica is a DevOps tool for automation with a complete software delivery process. It allows you to use reusable pieces of code to help you build infrastructure in no time. With Microtica’s pipeline workflow, you can get an overview of the build process at any given time. It’s not just all. It also allows you to automate sleep cycles, thus reducing AWS cost drastically. Also, it provides features like:

  • It allows you to deploy microservices with Kubernetes in no-time.
  • Reduce AWS costs for non-production environments

22. AppVeyor

AppVeyor provides continuous integration and delivery services for any platform. You can quickly build, test, and deploy your applications in a fast manner. It supports GitHub, Bitbucket, Kiln, etc. Each build executes in an isolated and clean environment. Some of its features include:

  • The console output makes it easy to debug the failure.
  • It provides faster builds with virtual machines and pseudo access.
  • It integrates with any source control tool.

23. Azure DevOps (Azure Pipelines)

Azure DevOps presents a simplified process for creating a continuous integration (CI) and continuous delivery (CD) pipeline. You can bring your existing code and Git repo, or you can select a sample application. Through this process, deliver value faster to your customers with a continuous integration and continuous deployment (CI/CD) pipeline which pushes each of your changes automatically. A CI/CD Pipeline implementation, or Continuous Integration/Continuous Deployment, is the backbone of the modern DevOps environment. It bridges the gap between development and operations teams by automating the building, testing, and deployment of applications. Some of the key features of Azure DevOps includes:

  • As a SaaS offering, Azure DevOps is reliable, scalable and globally available.
  • Azure DevOps pipeline is very simple and easy to configuration.

      I hope you really enjoyed to read and learn all the CI/CD tools. You can try each tool based on your needs in your project and organization. Enjoy your CI/CD pipelines.

Reference: LambdaTest

make it perfect!