XP Series Webinar

How Codemagic Mitigates Challenging Mobile App Testing Environments

In this webinar, you'll learn the secrets behind how Codemagic, a cloud-based CI/CD platform, helps tackle the challenges faced by mobile app developers and QA engineers and pro tips for healthy workflow infrastructure.

Watch Now

Listen On

applepodcastrecordingspotifyamazonmusic
Nihal

Nihal Aghazada

Solutions Engineer, Codemagic

WAYS TO LISTEN
applepodcastspotifyamazonmusicamazonmusic
Nihal Aghazada

Nihal Aghazada

Solutions Engineer, Codemagic

Nihal works as Solutions Engineer at Codemagic and has been a guiding force in helping Codemagic users build and publish their apps seamlessly, solving tricky mobile app integration problems along the way. Nihal has also worked on multiple integrations of 3rd party tools with Codemagic to help build and publish mobile apps.

Kavya

Kavya

Director of Product Marketing, LambdaTest

Kavya works as Director of Product Marketing at LambdaTest. Kavya leads various aspects of Marketing including DevRel, Partnerships, Events & Branding. Kavya is passionate about technology, education, and social impact thus excels in creating and executing marketing strategies that foster growth, engagement, and awareness.

The full transcript

Kavya (Director of Product Marketing, LambdaTest) - Hi, everyone! Welcome back to another exciting episode of the LambdaTest Experience (XP) Series. Through XP Series, we deep dive into a world of insights and innovation, featuring renowned industry experts and business leaders in the testing and QA ecosystem. I am Kavya, your host and Director of Product Marketing at LambdaTest, and it's an absolute pleasure to welcome you to today's XP webinar.

Before we start, let me introduce you to our expert speaker, Nihal Aghazada, Solutions Engineer at Codemagic. Nihal has been a guiding force in helping Codemagic users build and publish their apps seamlessly, solving tricky mobile app integration problems along the way. His extensive experience includes multiple integrations of third-party tools with Codemagic, making him the perfect person to shed light on our topic today.

In today's webinar, Nihal will unravel the secrets behind how Codemagic, a cloud-based CI/CD platform that helps tackle the challenges faced by mobile app developers and QA engineers. Codemagic doesn't just automate the app building and testing process. It goes beyond providing solutions for viewing test logs, easy access to simulators and emulators, launching custom devices for tests, and scheduling builds for optimal app development cycle management.

It's a treasure trove of insights. So let's without further ado, let's jump right into the heart of our discussion. Nihal, why don't you tell us a bit about yourself to the audience before we get started?

Nihal Aghazada (Solutions Engineer, Codemagic) - Hey, Kavya. Hey, everybody. Thanks for having me. I'm Nihal. I'm doing solutions engineering at Codemagic. I've been helping developers with onboarding their applications with Codemagic. And as Kavya said, we provide different levels of support from the product side. So it includes testing your application, building our applications, and publishing them to different stores.

And I've been doing it with the developers that we have on the Codemagic platform. So yeah, if, to begin with, if you don't mind, I'd like to briefly talk about Codemagic, what Codemagic is, and what it does. Then yeah, we can continue from that point on.

Kavya (Director of Product Marketing, LambdaTest) - Absolutely! We would love to see that.

Nihal Aghazada (Solutions Engineer, Codemagic) - Nice. I have one presentation. Let me, I think that; I'll try to share that one. Yeah, I think that it's better visually to show this while talking about what Codemagic does in general. Codemagic is a cloud-based continuous integration and delivery platform specifically designed for mobile applications.

If you build your application with applications with Flutter, React Native, native Android, native iOS, and Unity, then Codemagic can help you develop, build, and publish your applications and even including testing at this point. Thanks to its versatile workflow and API, it is now possible to build your white labeling applications as well.

So if you have one app and you want to white label it to customize it by changing it as icons and bundle identifier certificates. When talking about Android builds and key stores, etc. Codemagic can help you with doing this. So what you need to do is just add your application, and the repository could be from any Git provider, Bitbucket, GitLab, or GitHub, or if you have self-hosted repos, then Codemagic can handle these as well.

And then what Codemagic does is just seamlessly text your repo by providing these certificates, a key store, and everything that is required for Codemagic to do all these processes, all these manual processes that you usually do on your local machine. And then publishes them to different stores. Google Play, if you want to publish them to Microsoft Store or Firebase or different places, Codemagic can do them through the scripts that you provide.

Some of them are actually out-of-the-box ready, and if you need to publish them to internal channels, for example, Slack, you could need to send binary URLs to external users. You can achieve this with Codemagic as well, or email notifications, and all these are handled out of the box by Codemagic.

So I think if, yeah, that should be at this point enough because if I continue talking about all the things probably it would take forever. So yeah, that's briefly about me and Codemagic, what Codemagic does.

Kavya (Director of Product Marketing, LambdaTest) - Thanks, Nihal. Definitely, that helps. You know, it is, as you say on your website, one tool for all your mobile app builds. So thanks for that quick introduction. Now, we could get started with the questions. So the first thing that I wanted to understand was — What are the mechanisms that Codemagic offers for easy access to virtual devices through VNC or SSH?

Nihal Aghazada (Solutions Engineer, Codemagic) - Okay, yeah, so when we're talking about in general mobile development, you know, one step that we cannot avoid is testing. So, eventually, we want our end users to see our product with no errors, with no blockers. So before moving them and publishing them to production, we want to test them. And that testing environment is quite challenging, as we know.

So you could draw lots of factors that make this process quite challenging. One of them, let's get started with debugging issues. While building and publishing our application, we see issues, and we want to debug them without wasting too much time. Eventually, we want to focus on app development rather than building and publishing them by going through lots of manual steps.

Codemagic, at this point, allows developers to remote access to building machines because when triggering a build from the Codemagic side, that build is triggered in a virtualized environment, which means that the virtualized environment is active while your build is going on.

As soon as it's done, it's failing, passing for whatever reason; it just stops. That environment is destroyed. So before that environment is destroyed, Codemagic allows you to remote access these machines. Let's say you're building your native iOS application, but in order to build iOS applications, you need a Mac machine, a Mac machine, and an Xcode.

And as these don't require you to build, I mean, to have all these processes on your local machine means that by enabling remote access SSH and VNC session, you can log in to these Mac machines and open this Xcode. Let's call it virtualized Xcode, virtual Xcode.

If you need, let's say, your iOS application requires a higher deployment target, for example, and you can do it with Codemagic Xcode, what you need to do is just open Xcode in the VNC session, let's say, and then upgrade your deployment target, then by running the build command again on the Codemagic virtual machine, you can test it to see if that deployment target is the one that you're looking for.

The opposite scenario could be this, you don't know which deployment target it is, you just need to get an upgrade on your local machine, a local Xcode, and then push it, and then it is; if it is not the one that you're looking for, if it fails, then this cycle goes on and on. So in order to fully automate that process, Codemagic allows developers to have access to build the machines so that you can customize or continue testing on these machines rather than testing it on your local machine, pushing it, then coming back, etc.

This is one example that could help. I mean, usually, developers are now from the experience that they want to test it on the machines, like on the builder machines, rather than doing it because the build processes, you know, that is happening on the builder machine. And then there is one option as well, if required, if, let's say, that deployment target is the one that you're looking for.

You can change it in the virtual Xcode, and then you run the build command again with Codemajic machines, and the build passes. Then you have the option to push that change directly to your code base because, by default, Codemagic doesn't have the right access to the repos. So by giving access by providing your credentials, you can push them directly from Codemagic machines to your repo. This is optional, and it’s up to developers if they want to.

Kavya (Director of Product Marketing, LambdaTest) - Thank you, Nihal. So interesting. So essentially, for easy access to virtual devices, Codemagic provides, you know, VNC and SSH mechanisms that again allow developers to interact and troubleshoot their builds directly on the virtual devices. I hope that sounds so tough.

Nihal Aghazada (Solutions Engineer, Codemagic) - Mm-hmm. Yeah, absolutely. And one more thing, if I may add here, is that developers can also compare their builds, for example, in the virtual environment and the virtual Xcode. Let's say which version is being used, which deployment target, or anything really about code signing is used, and then they can't compare with their local builds. Yeah, this is quite interactive and quite helpful when debugging issues.

Kavya (Director of Product Marketing, LambdaTest) - Great. So the next question I had was — How does Codemagic enable the creation of multi-dimensional workflows for automatically building and publishing apps based on specific conditions in test workflows?

Nihal Aghazada (Solutions Engineer, Codemagic) - Hmm. That's multi-dimensional workflows. That's a good question. Well, when we are saying multidimensional workflows, I believe this is eventually what we want about fully automating our process. Because what we need, usually what developers need is they don't want manually, let's say, trigger builds, start to build as soon as they make any changes.

So at this point, what you can do with Codemagic when talking about multi-dimensional workflows is through Codemagic API, we can, let's say we have workflow A, workflow B, and workflow C. And we want to create this multi-dimensional structure and run these workflows.

So if you run your workflow A, which is your testing workflow, and you want, based on the results of that workflow, you want it to trigger workflow B. And again, based on the results, then eventually, you want to trigger workflow C, which is your production workflow, which builds your binary production binary and publishes it to stores.

So Codemagic allows you to achieve this through its API. So what Codemagic does at this point is it just reads the build status of workflow A. Let's see if it is finished successfully, the tests passed, and then everything's okay automatically; three APIs just trigger.

So you don't have to come back and trigger workflow A. It just triggers workflow B. And again, if, let's say, workflow B, there is something that needs to be debugged. There are issues, which is what we want at the end of the day before our application reaches the end users.

Just if it fails, then workflow C, which is our production workflow, doesn't get triggered, which means that it doesn't get published to the App Store or Play Store. And workflow as soon as workflow, as I said at the beginning, when introducing the main idea, you can enable these notifications as well.

So it sends an email or Slack or anything, any tool that you're using that can be integrated with Codemagic. Then you get these results to your, let's say, email that you built failed or you built passed and you built published to App Store, etc. So this whole cycle can be achieved with Codemagic API. And yeah, we have all this documentation quite clearly.

So yeah, if needed, developers can reach out to us or just read our documentation about our API. So yeah, the answer is yes, it's possible.

Kavya (Director of Product Marketing, LambdaTest) - Great, thanks, Nihal. Yeah, interesting. So it's like, you know, creating workflows that could dance to developers' tunes and having it all on autopilot.

Nihal Aghazada (Solutions Engineer, Codemagic) - Yep! That's the good one, actually. You just need to turn on the autopilot mode, and everything is done by Codemagic.

Kavya (Director of Product Marketing, LambdaTest) - Thanks! The next question that I have is — How does Codemagic integrate with external products like LambdaTest, specifically with real devices, and how does this integration enhance the overall testing process?

Nihal Aghazada (Solutions Engineer, Codemagic) - Sure! When it comes to integrating Codemagic with other tools, I've worked with many integrations, actually, and I can say that the versatile workflow system allows us to integrate these tools, whatever tool we want, quite easily. What it means is that the Codemagic YAML file, which lives in the root directory of your repository, is based on bash scripts and Python scripts. So if you want to customize something, if you want to integrate with an external tool, then what you need to do is just run the end points of that tool in the Codemagic YAML file. And Codemagic will print out all the logs.

And let's talk about LambdaTest integration, for example. We have integrated LambdaTest with Codemagic, which means that we are users and developers from the Codemagic side, they use LambdaTest API key points, and then they can see what's happening in the logs in the Codemagic logs. If it's publishing, if it's not publishing, if, let's say, credentials are incorrect, etc. So these can easily be integrated.

For example, I can quickly share my screen, Kavya, if you don't mind, showing about the LambdaTest integration. I think if you see this visually, that would be easier to understand what I mean by that. For example, this is a LambdaTest integration. What technically this does is developers take a LambdaTest API because LambdaTest provides real-time and app automation, which provides different, let's say, API key points, along with the credentials for the current request.

So what you need to do, what developers need to do, is just take this current request, provide your credentials for LambdaTest credentials, and then your binary is built, your test is, let's say, your test package is built, and then publishes, Codemagic publishes these to LambdaTest environment automatically. And from that point on, it is on the LambdaTest site to test the binary on real devices.

So at the same time, what you can achieve is that you can fetch these tests, let's say, the testing process and testing cycle, and then, using again the API endpoints, we can fetch these results to print them out in the Codemagic logs. So it's quite flexible, and it's quite easy to customize with different integration tools.

And yeah, which has been used many times by developers because, you know, different requirements, different tools. Yeah, the whole cycle; the general idea is just that you can customize the Codemagic YAML file according to your needs.

Kavya (Director of Product Marketing, LambdaTest) - Thanks for highlighting this, Nihal. I wanted to understand if there are any, you know, standout features or tips for maximizing the benefits that you might want to share with developers and testers listening in.

Nihal Aghazada (Solutions Engineer, Codemagic) - Well! The general idea is always about managing time and making the process quite easy to debug issues. And eventually lead, and guide our binary application to distort the end users. What I can say, for example, what comes to my mind at the moment is something related to your previous question about automating multi-dimensional workflows.

What you can do is you can add an extra layer of automation by scheduling your builds. So what it means is that Codemagic allows you to set up a time for your workflow. And that workflow is going to be executed at that exact certain time that you configure. So let's say we want to run our, we have QA workflows, and we don't want our QA workflows to be executed during the day when our production cycle is quite active with developers.

So what we can do is we can schedule a build for our QA builds and QA workflows. These QA workflows will be executed overnight. And then, if we enable this multi-dimensional workflow that we mentioned previously, then everything will be, will be triggered and done overnight. So, when you open your workflow, you'll see that the QA workflow is done. And then workflow B again, if you enable this multi-dimensional section, then workflow B triggered, and then workflow C automatically published without your notice. So yeah, the scheduling builds one of the things.

Another thing I can say is when it's about testing your mobile application on Emulators and iOS simulators. Codemagic machines and build machines have these simulators and emulators pre-installed, which means that you don't need to install any iOS simulator to execute your tests.

But at the same time, Codemagic allows you to customize and create these emulators and simulators. So this means that if you don't, if your application, for example, requires a different system of the simulator, then you can easily create with Codemagic and then run and execute your tests on that exact simulator.

So it's quite flexible that you can create, you can either use the pre-installed software or create them by yourself and then these on Codemagic virtual machines. So there are lots of things that can be achieved with the workflow structure. For example, if you need to test, not just testing, but I think it's mainly about building and publishing your app.

If you need your application to be built with a specific Java version or for Android builds, if you want to upgrade your Gradle, or if you need your application to be built with a specific Xcode. So all these can just, what you need to do is in Codemagic YAML file, just one line, you change one line, for example, Xcode 15, you just change it to Xcode 15.1, and save the file.

With the build, Codemagic takes into account that export version, which means that you don't have to, you know, what we usually do when building locally; we just need to update our export. If different Java, then we need to change the Java version on our local machine.

It's not just Java grade, it's Ruby and different software versions. If just Codemagic allows them to do it in one second, you can just change one line, and that's it. That exact software is going to be used with the build. Yeah, these are the, I think, quite useful things when it comes to building and testing applications.

Kavya (Director of Product Marketing, LambdaTest) - Thank you so much, Nihal. That really helps and is very insightful as well. So I would also like to understand if it could guide us through Codemagic configuration options for QA teams, emphasizing scheduled builds and their role in optimizing app development cycles.

Nihal Aghazada (Solutions Engineer, Codemagic) - I think I already kind of answered your question about scheduling builds, but I must again emphasize this because I've seen that it's quite useful for developers. At the end of the day, again, what we want is just automate the process. By scheduling builds, again, you just don't come back to a platform.

What you have is in your Codemagic YAML file and just the bills are triggered automatically on a scheduled base if you enable it. Another thing worth mentioning is that Codemagic bills can be triggered based on different events. For example, if you enable tag creation or if you create a PR pull request and you want code magic to trigger a build based on these ones or when merging these pull requests, you can easily configure this, and through webhooks, code magic triggers all those builds based on the event type you set up in code magic YAML file.

So yes, I believe they are all together helping not just QA engineers, but in general developers, what to do and when they want to achieve all these; I think there are questions like the main thing is these questions can be answered, can be, can be easily answered by Codemagic and then it's up to developers what they want to do.

Kavya (Director of Product Marketing, LambdaTest) - Great, thank you so much. It definitely seems like it is a great tool so that one could optimize QA workflows. So it's like, again, having a personal assistant who's automating tasks, making sure that testing is happening on time, and so on.

So, you know, as we wrap up, can you share pro tips on how Codemagic aids developers when it comes to building a robust workflow and tackling testing challenges in mobile app development?

Nihal Aghazada (Solutions Engineer, Codemagic) - As we already talked about how customizable Codemagic workflow is. So it just can be quite flexible to your needs; if you need to enable flow automation again, you can achieve it. If you don't want that flow automation to be in place, you can achieve it. So it all comes down to one thing, how developers configure the Codemagic. Let's say the product-based configurations.

So, for example, if any of these options are all given by our product, Codemagic. So if the deployment target, let's say, needs to be changed, you can remote access to build machine. If you want to, if you want to push those changes from that, you can do it.

If you need to change a software version automatically, you can do it as well. If you want to create some conditions inside your workflow, you can achieve it. So it is really hard to say one thing because I've seen loads of different requirements by developers. So it's hard for me to say which one is better than the other because all these are quite useful.

The main thing is all these are possible. But I think the vital point here is if there's a question while setting up the workflows, if there's a question and someone is not sure about something, how to configure it, I'd highly recommend Kuwaiti developers, Kuwaiti engineers, in general developers to reach out our team so that they can get the best practice depending on their needs.

Because otherwise it is really, it gets really hard to, you know, to configure these without now needs of developers. As we already, I think we've already covered many, you asked really good questions, and we've covered the main parts, even though we've got lots of other things to discuss, but these things are quite useful features that can help developers to build and publish their applications seamlessly.

But again, if any questions, if anything fails, or if the developers don't understand what to do with that configuration, etc. All these questions can be answered by our team.

Kavya (Director of Product Marketing, LambdaTest) - Thanks, Nihal. That was very insightful. So a pro tip for developers using Codemagic is to leverage its flexibility in workflow creation, incorporate automated testing at various stages, and of course, thus overcome the testing challenges that they face.

Nihal Aghazada (Solutions Engineer, Codemagic) - Absolutely.

Kavya (Director of Product Marketing, LambdaTest) - Great, thank you so much, Nihal. So as we wrap up today's webinar, huge thanks to you for sharing your expertise and shedding light on how Codemagic revolutionizes mobile app testing environments. I hope our audience finds this session insightful and packed with practical tips for enhancing their workflow infrastructure.

And as Nihal said, if you have any questions, do reach out to Nihal on LinkedIn. And before we sign off, stay tuned for more coming episodes in the LambdaTest XP Series. Until then, keep testing, innovating, and building exceptional mobile apps. Thank you, Nihal, for shedding all the light and joining us today.

Nihal Aghazada (Solutions Engineer, Codemagic) - Thank you, Kavya.

Kavya (Director of Product Marketing, LambdaTest) - Have a great day.

Past Talks

Revolutionizing Testing with Test Automation as a Service (TaaS)Revolutionizing Testing with Test Automation as a Service (TaaS)

In this XP Webinar, you'll learn about revolutionizing testing through Test Automation as a Service (TaaS). Discover how TaaS enhances agility, accelerates release cycles, and ensures robust software quality. Uncover the transformative power of automated testing in this dynamic session!

Watch Now ...
Shift-Left: Accelerating Quality Assurance in Agile EnvironmentsShift-Left: Accelerating Quality Assurance in Agile Environments

In this XP Series webinar, you'll learn about 'Shift-Left: Accelerating Quality Assurance in Agile Environments.' Explore the significance of Quality Driven Development (QDD) and strategies for advancing QA processes and optimizing efficiency in agile software delivery.

Watch Now ...
Fast-Tracking Project Delivery: Tips from a Recovering PerfectionistFast-Tracking Project Delivery: Tips from a Recovering Perfectionist

In this webinar, you'll learn tips from a recovering perfectionist on how to streamline bug reporting, provide developers with clear information, centralize bug tracking, and promote collaboration among project stakeholders.

Watch Now ...