Chapter I: Test
Google conducted its coveted annual developer conference, I/O, from 7th-9th of May. The conference saw a staggering 177 sessions (including the keynotes and the fireside chats). As always, google uploads all these sessions on YouTube. So convenient for us folks, who can’t attend this conference, to sit at home and watch them — either live or later at our convenience.
But but but … can you really go through all these talks where each talk ranges from 35–60 minutes? That’s the catch, isn’t it.
We, at quiQUA, strive to keep ourselves updated with all the latest ‘whats’ and ‘hows’ with a focus on test and release domain. So to make your life a bit easier, we have shortlisted all the talks pertaining to test and release domain from the I/O and bring to you a shorthand version of these talks.
Now mind you, these are just an abstraction of the talk — a bird’s eye view. We will be adding the links to the videos as well. For in-depth details, you can always go through the complete talk itself.
Let’s browse through these talks then, shall we?
Puppeteer has been gaining traction across the test (and dev) community for quite some time now. It is a node.js library that provides high level APIs to control headless chromium. Quite a few announcements were made for this tool :
- Puppeteer for Firefox has been launched on experimental basis. Currently, it supports ~90% of puppeteer APIs.
- New API for Browser Context has been added — It is based on Incognito mode and hence the sessions are isolated and prevents the user from launching a new browser session for each test case. This would save considerable amount of time.
- Mobile support has been added. The API emulate() provides an extensive emulation including User Agent, DPI, touch support. This mimics the physical device and adds robustness to emulator testing. Google has added support for a staggering 100+ devices.
- Support to test with Service Workers has been added. Now you can attach to service workers and perform cache testing from browser’s perspective.
- The API overridePermissions() to play around with an array of permissions for the website under test. This could be geolocation, camera, microphone etc
- In addition to Network monitoring, support for network modification has been added. You can now snoop on the request and send in your own response. This could effectively help you mock out the entire server and test just the UI
- The big one for us though was the accessibility support. You can get your website’s accessibility snapshot that renders an accessibility tree which is close to what’s read or displayed
Firebase is a mobile and web development platform. In a nutshell, firebase enables you to build better apps, monitor app quality and grow your business. While google announced enhancements in all three domains, we will just be focussing on the app quality perspective.
- Local emulators for firebase and Realtime database was launched in October. This emulator suite has been extended to include cloud functions. This would help you to test your application locally without connecting to a remote database
- Support for Wear OS, Android Q, Android App Bundles have been added to Firebase Test Lab
- Game testing has been improved by augmenting the same ML kit. Instead of testing the game by random taps, Firebase’s crawler makes intelligent decisions as to where to tap to form a game loop
- Flaky test detection — To give the user a better sense of their tests’ quality
- BigQuery Integration — Performance monitoring data can now be exported into BigQuery so that you can run your own analysis on the data
- Performance analysis for web applications has been launched
- Integration of Crashlytics beta with Firebase called App Distribution. The plan is to bid farewell to Fabric by March, 2020.
- Support for Customisable Velocity alerts. This can be configured in the settings under the Crashlytics console.
Improve app & game quality with Play Console tools
The 2 tools in Play console — Pre-Launch report (PLR) and Android Vitals have been instrumental in monitoring and improving app quality over time. A few enhancements were announced for the same :
- Non-SDK interface restrictions in Android Q. Interfaces not in use would be restricted to avoid runtime crashes
- You can now see Android Compatibility issues right in the report (errors and warnings) with details
- You can now add a test credentials for your application under settings in PLR. This would allow the crawler to test the app better beyond the login page
- For game applications, you can now create a game loop for key test path. Instead of random clicks, it would test the game loop defined by you. Details here
- 2 new tools added in Android Vitals since last I/O — Startup time and Permissions
- Peer benchmarking introduced. Developer can now select 8–12 peers and benchmark their application against their peers for all Android Vitals data as well as for public metrics like your ratings
- You can now sign up for Vitals email alerts as well
- Added support for App size metrics and reports. You can now gain insights about your app size in Android Vitals, including download size, size on device, changes compared to peers over time. Tailored optimisation suggestions will also be provided. Along with this, the app’s complete breakdown is provided — code v/s resources v/s data libraries
- PLR and Android Vitals have been linked to provide better debug analysis. Screenshots and videos of test flows provided in PLR
This concludes the quality related developments announced by Google at this year’s IO event. While we have tried to cover all relevant points from the plethora of talks, we understand this is not sufficient for you to dive deep into a particular topic. If need be, we encourage you to watch the talk.
Irrespective, we hope that the above gist helps you with quick takeaways. Keep a tab on this space as we will share the follow-up chapter on Build & Release engineering updates soon.