Peyton Craighill

Canvas Mobile Update - Fall 2019!

Blog Post created by Peyton Craighill Administrator on Nov 18, 2019

We’re waffling between snow and sunshine in Utah and my discolored pumpkins are shriveled and leaking, so that means it’s time for a fall update! Here’s what the mobile teams are working on.

 

Rise of the Machines

 

After a couple of relatively smooth iOS update cycles over the past two years, iOS 13 landed like Jello in a mud puddle. Its release coincided with a few big changes shipped as Canvas Student 6.6 and run-of-the-mill fall start firefighting. This combination resulted our patching the iOS student app every two weeks since August. While most of our users weren’t impacted by most of the bugs that were fixed, we didn’t hold onto fixes any longer than necessary. Now that the fall start rush has subsided, we’ve decided to redouble our efforts to automate testing in our mobile apps.

 

We’ve made more progress on automated testing in the past six months than in the previous three years combined, but we expect the robots to do more -- and to do it faster -- so that humans can focus on creating cool new things instead of shipping patches for defects that robots would have caught.

 

To illustrate the point, here’s a gif of an automated test of quiz-taking in the Android student app, first through the quizzes list and then through the assignments list:

 

quizzes end-to-end test

 

So that’s much faster than a human doing the same thing.

 

The up-front cost is high: it takes longer for a person to write the test above than it does for a person to test that flow. But once the test is written, it can be run as often as necessary. When you consider that the student app test suite is comprised of hundreds of tests, being able to run all of those tests in minutes instead of weeks is a substantial improvement.

 

The iOS and Android teams are both committed to writing and running all P0 and P1 [highest priority] tests by the end of this year. The good news is the automated test runs are already catching defects! A test run failed earlier this week when “Stop Acting As User” resulted in the robot admin being logged out altogether, for example.

 

The bad news is the increased focus on automation slows down our progress on parent app feature improvements. But I think it will be worth the wait.

 

Canvas Parent 3.0

 

In case you didn’t see the previous mobile update, we’re dividing parent app work into three chunks: grades list and syllabus (3.0), messaging (3.1), and calendar (3.2).

 

We’re in the process of testing one API change scheduled to go to production this week to finish up work on iOS Canvas Parent 3.0. I think we’ll be able to provide a link to the TestFlight version of that update by the end of this week. Apple allows public TestFlight links now, so no need to register beforehand anymore! 

 

I’ll provide a little more detail when I post the link, but at a high level, you’re going to see a grades list in the parent app for the first time, more robust homepage support (syllabus and frontpage will both be supported), and links from each of those places will work. Here's what that looks like:

 

course home in 3.0

 

This replaces the old "week" view within a course, which was redundant within the parent app.

 

If the TestFlight version looks good, we plan to ship it to the App Store in December.

 

For a variety of reasons -- some of which have to do with automated testing -- the current plan is for Android to bundle all three parent app chunks into a single update, which we’ll call 3.2. I’ll post a public link to that work-in-progress within a few weeks. We’re predicting that both platforms will ship 3.2 at about the same time in the new year.

 

Keep your eyes peeled for a separate post with more details soon!

 

------------

 

Since this post was relatively light on visuals, I took a picture of my desk neighbor and Android QA lead, "Just-Try-And-Stop-Me" Joe, working on automated tests for the student app:

 

smart joe

 

Happy November to you too, Joe! Do it to it!

Outcomes