Flutter Integration Test Tutorial + Firebase Test Lab & Codemagic

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
unit widget and integration tests that's the testing pyramid you're probably familiar with the first two have always been quite easy to write and quick to execute on flutter however integration tests which are the focus of this tutorial have had a fair share of their problems they used to be unnecessarily hard to write and impossible to run on device farms such as firebase test lab that is until we had the integration test package hello welcome to riso code where you're getting prepared for real app development so that you will get freelance clients or a job and be confident about the apps you build so subscribe and hit the bell to join us on our quest for becoming in-demand flutter developers this tutorial is sponsored by code magic the continuous integration and delivery for mobile apps built with flutter in mind it's incredibly easy to configure and also has 500 free build minutes every month so go ahead and check it out from the link in the video description before we jump into what we are going to be actually testing in this tutorial because the app which we're going to be testing is fully written so fully written this is the app that we'll be testing before we do that let's briefly talk about the testing on flutter and most importantly about integration tests so unit tests are for testing the non-ui logic of your app then widget tests verify the behavior of a single widget mostly both of these are quite low level they even can usually test and deal with intricacies that are only familiar to developers and testers also they are very quick to execute because they just run without any real app being built they do not run on an emulator or on the device so they are very fast to execute flutter's integration tests there's the ui flow of the app from the user perspective so again they test the ui flow of the app from the perspective of a user which would regularly use the app in fact we could say that they simply simulate a user who is just regularly using the app instead of integration tests we could in my opinion say ui flow tests but we are going to use the official terminology in this tutorial unlike unit and widget tests integration tests run on an actual device or an emulator and as you can imagine this makes them quite expensive to run both time-wise and financially of course and in addition to that they do not really deal with all the intricacies that the unit tests or widget tests can deal with they really are just for testing the big picture of the app just as if it was used by a regular user on an emulator right so while they are immensely useful in finding out about errors that affect the user integration tests give you very little information about what actually went wrong so that's the reason why integration tests are not enough on their own but they are a great complement to unit and widget tests so we are going to be testing this app which is already fully written for you and if you do not want to just write it yourself but actually get the starter project so that you can follow along with this tutorial make sure to go to the link in the video description which is going to take you to the written tutorial where apart from the startup project you can also find all of the code written in this video links to the libraries and overall go through this lesson at your own pace the app which is available in the startup project is very very simple we can enter a text into this field hello and once we press this faulting action button we're going to navigate to another display screen where the very same text will be displayed when we navigate back the text field will be cleared and when we try to navigate without any input inside of the text field we're gonna get an error from the form validation so this is really the extent of the app and this is the app we're gonna be testing in this tutorial previously these kinds of integration tests which would simulate the behavior of a user would be written with a flutter driver package but now we have the new integration test package which is just much much better it can for example run on firebase test lab it's even much easier to write so what more can you ask for we're going to execute them both locally and also in a more production grade setup with firebase test lab and code magic so that you can be fully confident that every piece of code you commit to a repository passes the test on multiple devices os versions screen sizes orientations and locals whether you have previous experience with the flutter driver package or not you're basically both on the same footing because the new integration test package does not really inherit a lot from the flutter driver in fact the syntax for writing these kinds of integration tests is the same as for writing widget tests so if you know how to do widget tests you are good to go if now you are anyway going to learn this in this tutorial right so the first step we need to take is to add the integration test package as a dev dependency into the prospect.yml file currently the version is 1.0.1 and this is all that we need to add to the pop spec yaml now the test we are about to write will be executed on an actual device or an emulator so this means that there simply must be some dart and also native code in the integration test package that's responsible for making all of the simulated tabs drags text inputs and so on to happen later on in this tutorial you are going to see how to build an android apk that's capable of running the integration tests fully on its own which is actually a requirement for running tests on firebase test lab we're going to be covering only the apk part for android but you can also create test files test app files for ios and also test things on the web we're doing that for time related reasons and links to all of the other platforms are in the written tutorial while we are still inside of our code editor though it's useful to run the test directly from our machine without the minor hassle of building an apk for that to happen we need an integration driver which we can use to sort of fake the old flutter driver approach we can create an integration driver inside of a new folder at the root of the project let's call it test driver and inside of this test driver folder we are going to create a file integration driver dot dart and inside of there we're just going to have a future void main which is going to run the integration driver just like that this is all we need to write inside of this file if you are familiar with flutter driver and again if you are not that's completely fine you're going to learn everything in this tutorial but if you are familiar with it this file will be passed into the flutter drive command as the driver if you remember how i was verbally describing what the app is going to be doing so when we input a text we go to the next screen where this same text is displayed then when we go back the text input is cleared and when we try to navigate without any text input we get an error message well this very description is what we are going to be testing the only thing we'll do is to take that description and take the actions which i was doing manually and transform them into an automatic test which is written in the dart language using the widget testing api the tests themselves should be placed inside of a folder called integration test and because we are testing the whole app let's create the file apptest.dart as with any other tests we need to have a void main and even though the syntax for writing integration tests is the same as for writing widget tests there is one important difference and that is that we have to call integration test widgets flutter something binding it's too long integration test widgets flutter binding dot ensure initialized this needs to be the first line inside of the main method while you do not need to know how the app is implemented in order to write an integration test after all we are testing from the user's perspective what you do need to know is this the page which contains the text input is called typing page the second page which displays the inputted text is called display page and lastly the text input field or text form field actually has the key your text field the other things are just implementation details as far as integration tests are concerned let's first write a test for when the user doesn't input any text this is when the error message should show up so we're going to write test widgets and provide a description and also a callback which will take a widget tester tester async and that's it just a regular widget test i always try to make the test descriptions convey as much information as possible and i suggest that you do the same so we are going to write as the description for this test that not inputting a text and wanting to go to the display page shows an error and prevents from going to the display page and as always you can get all of this code even the one which i have just pasted the string from the written tutorial from the link in the description so what do we want to do here inside of this test well we first need to tell the test with which widget to start which widget should be displayed on the screen first we can do that by saying await tester dot pump widget and we want to pump the root widget of our app which is called my app so let's do just that my app we are testing that we do not input any text and we want to go to the display page and how do we go to the display page well we want to press the floating action button so that's what we're gonna do we're going to say await tester dot tab and we want to tap the floating action button and since there is only one floating action button we can find a widget by its type so find by type and the type of the button or of the any kind of widget is floating action button just like that and we're good to go now we have tapped the floating action button now there is one little kvn that we need to be aware of when we are writing these kinds of tests and that after pressing something which does an animation or it changes something on the screen we should always wait for that change to finish so for example right when i have a text inputted here but i press the button there is an animation as we are going to the next page in the same way when there is no text inputted and i press the button there will be a brief animation while the error text is being displayed so if anything has this kind of animations you should always wait for them to happen and fully finish so we're going to await tester dot pump and settle as the test description indicates this single tap of a button is all that the user or the simulated user should do inside of this test so now comes the time for verifying if everything happened correctly so we are going to expect that if we try to find the typing page so find by type and the widget which we want to find is the whole page typing page then we expect that we find one widget so the matcher will be fines on widget why well because we should not have moved to the display page because if there is an error meaning that the text field is empty we should stay on the typing page and not go to the display page in the same way we can actually copy this line below if we try to find a display page or the display page we should find nothing so finds nothing and lastly when we try to find a text containing the error message so expect find text and the error message says input at least one character like this then we should find one widget so finds one widget we are now going to execute this test immediately but let's just first actually write the second test as well which will be testing for when the second page actually appears when the text is inputted and then when we come back the text field should be cleared so let's again write test widgets i actually have a shortcut for it so wt like that and now the description will be after inputting a text go to the display page which contains that same text and then navigate back to the typing page where the input should be clear i mean the description cannot get any more descriptive than that so again let's first pump the my app widget and then we want to input a text into the text field so let's actually write the input text into a final variable which is going to be called input text and the text will be as follows so hello there this is an input and again you can get this code from the written tutorial now to enter this text into the field we are going to say await tester dot enter text the widget into which we should enter the text is the text form field and if you remember we can find this text form field by key and its key is key your text field with dashes in between and the text which we should input is the input text now after inputting your text we should go to the display page so going to the display page again will happen by tapping on the floating action button so we can just copy it from the test which we have already written and now is the time for the expectations inside of the second test so we can actually copy the page widget expectations but now for the typing page we should find nothing and for the display page we should find one widget because the text is actually inputted therefore we should be able to navigate to the display page we should also check if the display page contains the same text that it was inputted on the typing page so we're going to say expect finds or find dot text and the text which we want to find is the input text and we want it to be actually present there so we say finds one widget next the test description says that and then navigate back to the typing page so we can do that by pressing the back button up here on the floating or on the app bar and to do that programmatically we're going to say await tester dot tab and we want to tap a back button that's the type of the button which is present on the app bar so we're gonna say find by type back button then again pump and cell to wait for the animations to well pump and sell and after this we should be back in the typing page so for typing page it should find one widget and for display page it should find nothing and lastly the input text should not be present anymore in the typing page because the input field should be cleared out so we're going to say finds nothing now how can we run these tests on the emulator which is running on our machine or you can also run them on a device connected through a usb well we're going to use the flutter drive command first let me just stop the app from running regularly and we are going to open up the terminal and start writing flutter drive and we want to specify the driver so 2-driver is equal to and the driver is inside of the integration driver file which we have created first so test driver slash integrationdriver.dart and the target file which means the actual test file which we want to execute is located inside integration test slash apptest. now let's hit enter the app is going to be built and after a while it will appear over here inside of our emulator and it will run automatically and also it's a pretty fast process it doesn't mess around this tester it's much faster than a regular user would use the app so here we go test starting boom boom everything has run and we can see that all tests passed great what we have done now is great it's much better than the flutter driver tests because if nothing more the syntax is much simpler because the widget testing syntax is simpler than the flutter driver syntax this is just a simple fact however if this was really everything that the integration test package had to offer it would not be that great of a package what we actually want to do is to be able to run the tests the integration tests on services such as firebase test lab and in order to do that we need to just have a single apk file which after it's installed is going to run the tests because on firebase test lab we cannot execute this kind of a command which provides a separate driver and a separate target it needs to all run just from a single process from a single app in the android world these kinds of integration tests are actually called instrumentation tests and basically we are now going to hook up these cross-platform flutter integration tests to be run as if they were native android instrumentation tests and of course firebase test app can cooperate with these kinds of android instrumentation tests just fine to set things up inside of the android folder inside app src let's create two new folders android test actually android test in pascal casing or camel casing actually and then another nested file java then we want to create other nested folders they will follow the package name of your app and how to find the package name will open up the main folder inside here then if you are using kotlin as your native language then open up kotlin if not open up java but i'm using kotlin and then these three files are our folders are com resocoder integration test tutorial so these same folders have to be present these three inside of the java folder so let's right click new folder com reso coder integration test tutorial and of course you are going to create folders which you have yourself inside of the kotlin folder inside the android test folder all the way down in the folder hierarchy we want to create a new file mainactivitytest.java all pascalcased java you see i start writing d for dart i start writing underscore instead of pascal casing i'm just i guess a full-on flower developer by now but anyway i would suggest that the content of this file you are just going to copy and paste it from the written tutorial to which you can get from the link in the video description because uh we are not really writing java code too much around here and it's actually just a configuration there's no real logic present in here so we just create the main activity test which is going to be used from the native android instrumentation tests and we run it with the flutter test runner and then the plugin which is imported in here the dev flutter plugins integration test is going to do all of its things to make your cross-platform integration tests run as if they were native android instrumentation tests just make sure to change these two lines the package and also the import of the actual main activity to reflect your own project so this calm reso core integration testing prep will change to your own package name the last native android configuration step is that we will go to the build.gray file present inside of the app folder right here and we're gonna add a bunch of dependencies so also inside of the default config here we're going to add test instrumentation runner you can just copy all of this from the written tutorial really and then inside of dependencies here we are going to add a test implementation for junit and also android test implementation for android x test runner and also espresso core and all that this is just so we can execute the instrumentation tests with all of this set up we can now build an apk that's going to run our integration tests as if they were native android instrumentation tests but it doesn't make much sense to build it before we set up firebase test lab and code magic to automatize the building and testing process let's first set up the firebase test lab now to run tests on the tesla app you need a firebase project but do not worry because you do not actually need any firebase dependencies inside of your app you do not need to use any other firebase services like firestore analytics or cloud functions you don't need to add any files to your app directly in other words firebase test lab which we are going to be using here just does not care if your app uses other firebase services or not now of course if you do use for example firestore inside of your app and you have some dependencies inside of your app for firebase that's perfectly fine too but it's not a requirement you can also use your old firebase project or create a new one i'm just going to create a new one so just go to console.firebase.google.com and links to all of these websites which we're going to be going to throughout this tutorial are also inside of the written tutorial so the project name will be let's say integration test tutorial just like that let's say continue we're going to disable everything because we really do not need anything special enabled we are also not going to again configure this inside of the vs code we're actually not going to touch vs code at all and now the project is ready continue and that's really all there is to setting up a firebase project when we want to only be using the test lab we do not need to configure anything else what we do need to configure a bit though is the google cloud project which is associated with this firebase project because surprise surprise firebase is owned by google so they have these kinds of integrations in between all of their different uh consoles and platforms so although we are really working with firebase test lab we're going to be operating with uh all the different options we want to configure inside of the google cloud console so just go to console.cloud.google.com link is in the written tutorial and now from this drop down up here select the project which you have just created on firebase so let's search for integration integration test tutorial right here let's select that here we go what we are now going to be configuring is the service account so just open up the navigation menu here go to i am an admin and select service accounts we're doing this because we are after all working with google firebase projects so there is obviously a need for authentication but because we want to use firebase test lab without any interaction on our part because we are going to be running this thing from code magic where we just simply cannot click through authentication prompts and you know sign up using your google account because we are running just from a console from some remote build machine in a data center that the code magic operates and precisely because of the lack of possible user interaction on our part we need to have a fully programmatic way to authenticate and when it comes to google cloud projects that's with a service account so actually you should already have a service account at least one over here for the firebase admin sdk you can technically create a new service account just for the purpose of authenticating through code magic but i think at least for the purposes of this tutorial is not going to hurt us to actually use the service account which is already created in here but if you want to have more granular control over the permissions of the service account just create a new one but i am going to use the one which is already created for us automatically when we set up the firebase project and in order to authenticate with a service account you want to get a key so click here create key we want to select json for the key hit create and we are going to be able to download a json file put this json file somewhere safe and also remember where you put it because we are gonna need it later on in this tutorial another step we need to take while we are in the google cloud console uh is to go to this iam tab and select this first email address or if you have created your own service account then select the one which you have for that service account of course and edit the member and we are going to add a role which is going to be an editor like this save that and you're good to go in this regard now let's do one more step which is needed from us over here in the uh google cloud console and that is to go to apis and services from the menu go to library and search for cloud tools with a space in between cloud tools results api this one also there is a link precisely to over here in the written tutorial and just hit enable once that's done we have fully configured our firebase slash google cloud project to support uh testing just from the command line on code magic so that's awesome so how can we automatically run the tests with cold magic well cold magic is a continuous integration and delivery service for mobile apps designed with flutter in mind and among other things it's perfect for kicking off integration tests on firebase test lab whenever there is a new comment or pull request in a git repository you have 500 build minutes on codemagic free every month so you can just sign up and follow along with this tutorial link to code magic is in the video description or it's also just codemagic.io so once you sign up i would recommend that you sign up or sign in like this with your github account so github and select all repositories oauth code magic is also integrated with bitbucket and gitlab and you can also use any kind of a git repository even custom hosted ones or from azure for example but for the purposes of this tutorial i'm going to use github with the all repositories oauth once you're in here now is actually a good time to create a repository for your project and to also create a remote repository and push your code to github which i'm actually going to do now so i have already created a repository but i'm going to create a new comment saying finished project as is usual with tutorials over here on riso coder and i'm just going to commit this and push with this done we have all of the code necessary on github so let's go back to the code magic and after searching for integration i can see that i have this integration test tutorial which is not yet set up at all so we want to set up this repository to launch integration tests so we are going to select a workflow for flutter it's going to be a flutter app and the first thing we want to do here is to add the google service account key file which we have downloaded a while ago while we cannot upload the json file simply by uploading the file here we can add it as an environment variable but the variable value has to be a simple string well you can convert any kind of file including json files into a base64 string and then set them up as environment variables now comes the question how do we convert a json file into a base64 string well there are very very many ways to do that but i'm going to use the one applicable for me because i'm on windows and i'm going to be using git bash other ways for mac os and linux are all written in the written tutorial so if you are interested in your respective platform just check out the written tutorial from the link in the video description but now i'm going to open up a file explorer here on windows and right here we're going to open up git bash so git bash here again this is just for me for windows if you also are on windows with git base i would recommend this approach and now we just want to say base 64 and provide the path to the file so in this case it's in the same folder so integration test tutorial blah blah blah the json on git bash you are going to be presented with the base64 string printed out to the command line so let's just copy it all and now come back to the code magic website and create a environment variable with name g cloud key file although the name is totally up to you and paste that variable in here or that string in here and also tick on the secure option with secure ticked on this string will be encrypted and then also decrypted when we try to get it from a script which we are going to add in just a little while now hit add for this environment variable and we can close this environment variables thing here now comes the time to write a script to run the tests on firebase test lab there are multiple places that you can write your scripts on code magic you can have a post clone script pre-test script you can have all kinds of script at different places of the build process so where should we put the script for running the tests well the answer is we are going to create a post build script so hit this plus and we are going to be writing our script here instead of the post build script text field the reason for that is very simple the documentation of the integration test package says that we should build the app first with the usual flutter build apk command which you are all familiar with that's the usual way to build an app and only then should we use the more specific commands to build the testing apk which is going to be running the integration tests and because we first need to build the app regularly well we are going to write this script in the post build script because the flutter build apk has been run instead of this build tab and actually let me go into the build and disable the ios platform so that we can speed up the build process a bit because we don't need ios at all and uh yeah i guess that's it for the build tab just to speed things up and also inside tests we are now going to enable any tests you can see that you have flutter drive but actually we are not going to use flutter drive from code magic like this because we want to use firebase test lab so we need to write our own script save the changes always now this post build script text field is quite handy when you are writing your scripts yourself but because we are on a video here and you would probably not see anything because uh it just doesn't work well with enlarging the the ui as you can see to 200 percent what i'm going to do instead is to write the pose build script in vs code and then just copy it over here so let's go back to vs code i'm just going to create a new file and select bash huh or actually not badge but shell script that's how it's called for highlighting and let's go ahead and write the script so we first want to change the directory to be the root of the flutter project and since we are on codemagic's build machine there is this uh environment variable fci build there which points to the very root of our flutter project that's the same root as is displayed here in vs code this is where this variable points to now we want to go to the android folder so we are just going to say push directory so push the android the way to programmatically build an android test apk is by using this gradle w script here so we're going to say dot slash gradle w app assemble android test this builds the android test apk and this is precisely why we created that main activity test.java now we also want to build with gradlew a debug apk and pass in the integration test which we have written as a target so we're going to say app assemble debug and pass in p capital p target and it's going to be again equal to a string and we are going to start the path at the fci built there like this and then slash we want to point to the integration test which we have written so we want to say slash integration test apptest.dart slash app test dart so that would be it for building the debug app pointing to our test file and then say push or actually pop d sorry because we want to come back from the android folder back to the root of the flutter project oops actually cannot save this file because i'm just going to copy it later we do not need to save it now if you remember we have created our own environment variable the gcloud key file which contains the json key file converted to base64 and it's also encrypted now we want to take this environment variable which we have created and output it as a regular json file into the root of our flutter project for example the way to do that in a script like this is to say echo gcloud key file so this is our environment variable and we want to echo this thing into a base64 command we want to decode now and we want to decode it into the file at the root of the project here and the file will be called gcloud key file json so now we will have the very same json that you downloaded but we have converted it from a environment variable in base64 back to the json file once we have that now comes the time to authenticate with firebase or in other words google cloud with the service account this is exactly why we need this gcloud key file json file so in order to authenticate with a service account we're going to say gcloud gcloud the google cloud cli is pre-installed on code magic already which is pretty cool and we're gonna say auth activate service account and now we want to specify the key file so key dash file and it's present at gcloud key file dot json at the root of the project so we do not need to specify any special paths here after we are authenticated firebase and google cloud knows that we are truly who we pretend that we are now we need to select the firebase project on which we want to use the firebase test lab now how do you get your firebase project id well if you go to the firebase console right here and go to the settings project settings you have the project id here in the project settings whoops so for us it's integration test tutorial so let's copy that up your own respective ids of course so let's go back to vs code now and we want to select this project so we're going to say ug cloud quiet so that we don't have any problems or anything config set project and now we want to paste in here the project id which we have just copied and lastly this is truly the last command is to actually execute the firebase test lab tests so we're gonna say gcloud firebase test android run and now we could just write it inside a single line but it would be quite uh you would not be able to read it right in just a single line it's too confusing so we are going to put it in multiple lines like this with backslashes so let's say the type of the tests is instrumentation new line the app which we want to run is present at the regular build output for android apps when you are using flutter so we're going to say build slash app slash outputs slash apk slash debug slash app dash debug dot apk so it's uh right here in the build so build app outputs apk debug here great then also we want to specify the test apk so we can actually copy this thing and cut it off right after apk because now it's actually present in android test slash debug slash app debug android test dot apk again new line here actually i forgot new line in the line above now we're good and this is all that's really needed in order to run the tests on firebase test lab but you can also add more options for example timeout for test to be two minutes and then you have a plethora of other different configurations that you can provide to this command for example you can specify which devices to run this thing on for in which orientation to run these tests with which low cost to run these tests and you have many different options to choose from and many different devices to choose from so if you are interested in all of that there is a link to the documentation in the written tutorial for now we are just going to run on the default configuration of firebase test lab which if i am not mistaken is a pixel emulator just a single one but you can easily expand that to run on even 10 or 20 devices in different configurations but also keep in mind that uh while you can use firebase test lab for free there are only as of now five builds per day for free and then you of course need to pay it's not very expensive but you just need to pay because of course uh google needs to make money off of this as well so just be aware of that all right we have written this script in vs code for uh simplicity purposes and so that you can see it properly but now we're going to copy it all go to code magic again and paste this script as the post build script paste it in here it should all be working fine save changes and now let's scroll up and you could specify build triggers so that the build gets automatically triggered when there is a new push a pull request update or tag creation you can specify all the different branches that these build triggers should be worried about but for simplicity we are just going to start our first build manually so there is only one workflow in one branch so we can just start new build and now go get some coffee uh have a break and we're gonna be actually back pretty quickly through the magic of video editing once the post build script is running so now we have the post build script running after a few minutes of building so uh we can actually see what's happening here uh everything is being built and after some while the apks which we need are gonna be built hopefully successfully i guess there should be no problems and it wouldn't be a good tutorial without these kinds of blatant errors on my part so of course excuse me for that we need to go back to vs code or actually you probably don't need to go back to vs go but i do and inside main activity test.java i have inputted a wrong package name because i have just copied it from the written tutorial but here actually the package name is different it's integration test tutorial so again integration test tutorial this is how it's called integration test tutorial and if we take a look at the output from the console on code magic we can see that this is exactly what's happening if you can see it on youtube we have that uh cannot find symbol cannot find the main activity inside of main activity test because well we have not imported it properly but now we did so we need to commit that again so fix finished project fix oops last minute fixes push and now we can again execute the build and we should be fine start new build start new build and now it should actually run fully successfully and here we go so the whole build process on code magic has run including the post build script so if we take a look at its output we can see that there is a bunch of output but what's important to us is the success messages so build successful this is for the test apk then we have another build successful which is for the debug apk pointing to the target which is the apptest.dart file the integration test file and lastly we have a bunch of configurations of the google cloud project so that we can then upload everything successfully to the firebase test lab and as you can see two test cases have passed which is good to see actually when we go to the firebase console to the test lab tab we can see this test which has just passed clicking on it we can see on which devices or emulators it has run as i've said you can configure this to run on multiple many different devices many different screen orientations low calls and so on but we have just run it on pixel 2 api level 27 and what's actually nice about this is that you have a uh the standard output of test cases and all that you can also see the locks if there were any and it appears that there were some locks but we also have this video so we can play that and again it's going to be a pretty rapid fire because the tests just execute so fast but still you can see something actually you didn't even see anything because it just it's so fast that you cannot even see anything happening on the screen but uh it works so the test case is passed and that's what's important that's it for this tutorial and to go through it at your own pace once again and to get all of the code check out the written tutorial available from the link in the description and if you are serious about becoming a great flutter developer who can build real apps for clients or at the job go to flutter.education link is also in the video description by the way to get the top curated flutter news and resources aimed at improving your app development career over there you can also subscribe to my mailing list to get the best flutter resources delivered weekly right into your inbox and if you do not want to miss more tutorials like this about testing and about overall flutter development be sure to subscribe to this channel and also join notification squad by hitting the bell button to make sure you grow your flutter skills because here on riso coder i am determined to provide you with the best tutorials and resources so that you will become an in-demand flutter developer if this video helped you learn how to write integration tests how to set them all up how to execute them on firebase test lab with code magic give this video a like and also share it with other developers who are surely going to find this beneficial too if you have anything to say leave a comment and see you in the next video [Music] you
Info
Channel: Reso Coder
Views: 17,272
Rating: undefined out of 5
Keywords: resocoder, tutorial, programming, code, programming tutorial, flutter, flutter tutorial, flutter integration, flutter integration test package, flutter integration test example, flutter driver, flutter driver testing, flutter testing, flutter testing tutorial, flutter widget test, flutter firebase test lab, flutter firebase test, flutter codemagic, flutter codemagic tutorial
Id: izajHHFSa8o
Channel Id: undefined
Length: 57min 57sec (3477 seconds)
Published: Sat Jan 02 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.