How to Test a Progressive Web Application
In this article, we offer a high-level discussion of progressive web applications and how best to go about testing PWAs.
Join the DZone community and get the full member experience.Join For Free
Developers have been trying to fully implement pure web-based apps for mobile devices since the launch of the iPhone in 2007, but it is only in the last 1-2 years that we have seen headway in this direction. Progressive Web Applications are pure web-based apps that act and feel like native apps. They can be added as icons, opened in full-screen mode (without the browser), have a pure native app kind of user experience, and generate notifications.
On the other hand, they take up nearly no space, are fast, are rich like web apps, and improve the whole process of update and release to change a feature or look and feel.
And they work offline!
As the name suggests, PWA or Progressive Web Applications are Web Applications… but better.
PWAs are web applications that aim to provide an app-like experience to users and have all the modern web capabilities in one place. This technology provides all the app like functionalities directly from your browser and saves you from the pain of searching, downloading, and updating as in the case of native apps.
What Makes an Application a Progressive Web Application?
Right now, based on research and content available on the net related to PWAs, Google is the highest authority. As per Google developer blogs and guidelines, if your app has the following features then you can say yes, my web application is a progressive web application.
- Progressive: Your web app must work for every user, irrespective of their choice of browser.
- Responsive: As your web application is going to be opened in a browser then it should be responsive.
- Connectivity independent: Yes, that’s what is one of the unsung heroes in a PWA. Your web app should work regardless of the internet connection or some of the features must work in no or slow network situations.
- App-like: It should provide an app-like experience to the users. An app like experience includes full-screen mode, access to various built-in accessories like camera, mic, etc.
- Up-to-date: Your web application must always be up-to-date and it should not bother the user by asking for updates.
- Safe: It should be served over HTTPS.
- Easily Accessible: You can install the app or you can say access it directly from your home screen with just one click.
- Fast: Reports show that 53% of users abandon your site if it takes over 3 seconds to load. And obviously, you won’t want the users to go back. Hence, your app should be fast.
Once You’ve Developed, It’s Time to Test!
Developing a progressive web application is a little out of the scope of this post. If you are interested, Google has a great tutorial on it here . So once you are done developing a web application the next immediate step is to test it.
So, What All Is to Be Tested in a Progressive Web Application?
While testing a progressive web application, you need to test for these given points:
- The site is served over HTTPS: Safety is one of the major concerns in a progressive web application, hence you need to make sure that your web application is served over HTTPS. How to test: You can use Lighthouse by Google Developers, jitbit, seositecheckup, digicert, ssl shopper, ssl labs, etc., to test if your website is served over HTTPS or not.
- Web pages are responsive: Make sure that your web application shows a responsive behavior across all mobile and desktop devices.
- Offline Loading: All your web pages or at least some of the web pages must work even when your app is offline. You need to make sure that your web app responds with a 200 when it is offline. How to test: Again, since Google is massively pushing the PWA ecosystem, they have some of the best tools for testing PWA apps. For example Lighthouse. An alternative is Wiremock.
- Cross Browser Compatibility: You need to test your web app for cross-browser compatibility to ensure that your web app gives a seamless user experience across all browsers.
- Metadata for ‘Add to Homescreen’: You need to test if the web app provides metadata for ‘Add to Homescreen.’ How to test: You can use Lighthouse to test for metadata for ‘Add to Homescreen’ functionality.
- Page transitions should be smooth: Transitions are key to perceived performance, hence they shouldn’t feel laggy as you move around, even on slow internet connection. How to test: This should be done manually on a slow network. When you click on any button or link it should immediately respond either by transitioning immediately to the next screen and, while waiting for the app to respond, show a placeholder loading screen or a loading indicator.
- Each page must have a URL: Every page on your web app must have a URL and all the URLs must be unique. How to test: Test it by checking that every page is linkable by a URL and can be shared on social media or other platforms. The URLs can also be opened directly in new browsers. Shareability: Content should be easily shareable even through full-screen mode and it should form cards for all the social media platforms. How to test: Test manually by sharing content from full-screen mode. Test for cards can be done as:
- Facebook: Debug the URL by entering the post to be shared and verifying if cards have been generated or not. Test it here.
- Twitter: Check if the type of card for your content is added to the HEAD element of the page:
<meta name="twitter:card" content="summary" />
- Availability of Schema.org Metadata wherever needed: Your web app should be able to create a rich card if applicable. It helps to improve the appearance of your website by different search engines. How to test: You can use Google’s Structured data to ensure image, description, title, etc., are available.
- Push Notifications: If push notifications are applicable for your web app they should not be overly aggressive. How to test: Test the push notifications opt-in flow. There should be clear instructions stating what the site wants permission for and why the user should enable the push notifications.
Published at DZone with permission of Deeksha Agarwal. See the original article here.
Opinions expressed by DZone contributors are their own.