Location settings

This is the test report for SAF-73. Bugs raised: SAF-231, SAF-239, SAF-240, SAF-241.

On Android we have 3 levels of location settings:

  • Deviuce level: location on/off

  • App prmissions: ocation on/off

  • In-App setting

We tested

  • All 2^3 = 8 combinations of these

  • In the main app screen, and during the main onboarding process

  • During on boarding we also tested:

  • Allow/deny when asked for location permissions

  • “Don’t ask again” as an option after denying location permissions

Summary of problems found (internal identifiers used until we determine whether to raise JJira issues for all of these).

  • SAF-231: Green “No known contact” is shown even when no HA is configured. The screen should be Greay and direct the user to configure an HA.

  • LOC-1: The code assumes that if the App cannot access location this is an App permissions issue. It might not be. It might be that Location is disabled at the Device level. When this happens the APp confusingly keeps directing the user to an App permissions screen that already has the right settings, and never helpd them to find the actual Device-level setting to turn location on.

  • LOC-2: In states where the In-App setting is “on”, but App location permissions are denied OR location is disabled at Device scope, the “Dashboard” shows “Location Active” with a green check. This can be a source of confusion in several scenarios (see details below). We could consider a different UX in these cases (although a red X might be equally confusing as it won’t show the toggling of the in-app setting).

  • LOC-3: During onboarding, if I choose to “Enable Location” but then deny the App location permissions, the in-app setting gets set of “off”, which makes the later flow for enabling location complex& unintuitive. In this scenario it seems it would be better to set the app setting to “on”.

  • LOC-4: At the end of Onboarding, the “all finished” screen does not correctly reflect the Device-level location settings, so it can show a green tick, even though location is not properly enabled, and the immediately following main screen shows Red: Unknown.

  • LOC-5: Some inconsistency in language: location history / location data / location inactive; Settings screen / Dashboard

  • LOC-6: Clumsy wording: “enable the app to access your location”

Other notable points:

  • In general, the handling of the case where the user denies location access to the App and chooses “don’t ask again” is very well handled. Even after this, it remains easy for the user to navigate to the correct App permissions again. Great work!

Detailed Testing Notes

Testing on Android 9, Moto G7 Power. Using this build:
https://github.com/Path-Check/covid-safe-paths/runs/659418431?check_suite_focus=true

(top right hand corner of this screen for a download)

So 2^3 = 8 combinations of these to test. First we test the main screen

Settings

Observed

Expected?

Settings

Observed

Expected?

Device: on
App permission: on
In-App Setting: on

Green: “No known contact”

This would be correct if I had an HA configured. But I don’t - the screen should tell me I haven’t selected a HA, Known bug SAF-231

Device: on
App permission: on
In-App Setting: off

Red: Unknown - tells me to enable location history in the settings screen.

Enable Location Data button takes me to “Dashboard” where I can change “Location Insctive”

All as expected, but terms are highly inconsistent. (LOC-5)

location history / location data / location inactive.

Settings screen / Dashboard

Device: on
App permission: off
In-App Setting: on

Red: Unknown - tells me to “enable the app to access your location”

Enable Location data button takes me to App Info page, where I can change Permissions

As expected, but wording is clumsy. (LOC-6)
Suggest:
”allow the app to access your location“

or

“enable location access for the app”

Device: on
App permission: off
In-App Setting: off

Red: Unknown - tells me to enable location history in the settings screen.

Enable Location Data button takes me to “Dashboard” where I can change “Location Insctive”

When I do so, I am invited to enable the app level permission in a pop-up.

This works brilliantly - gets both settings enabled in one easy flow!

Device: off
App permission: on
In-App Setting: on

Red: Unknown - tells me to “enable the app to access your location”


Enable Location data button takes me to App Info page, where I can change Permissions.

But when I get there I see the App already has location permissions, so not clear what to do next.

On return to the app, status is still Red: Unknown.

In this case, the app needs to direct me to the Device level location on/off setting, not the App Permiession, which is already correct. (LOC-1)

Device: off
App permission: on
In-App Setting: off

Behaviour is the same as case above:

Device: on
App permission: on
In-App Setting: off

Except that at the end I still have Red status: Unknown.

This isn’t good enough - it gets the App setting correct, but it doesn’t help me get the Location service enabled at Device scope. (LOC-1)
Note: correcting the App setting does not remove the Red status (this is good, since it reflects the fact that location services are still not working).

Device: off
App permission: off
In-App Setting: on

Behaviour is the same as case above:

Device: on
App permission: off
In-App Setting: on

Except that at the end I still have Red status: Unknown.

I get guided to fix the App permissions (good), but it’s not enough. (LOC-1)

Correcting the App permissions does not remove the Red status, and it’s not clear how to do it.

Device: off
App permission: off
In-App Setting: off

Behaviour is the same as case above:

Device: on
App permission: off
In-App Setting: off

Except that at the end I still have Red status: Unknown.

I get guided to fix the App setting & permissions (good), but it’s not enough. (LOC-1)

Correcting theses does not remove the Red status, and it’s not clear how to do it.


Other observations:

(LOC-2) In states where the In-App setting is “on”, but location permissions are denied OR location is disabled at App scope, the “Dashboard” shows “Location Active” with a green check

  • This is an accurate reflection of the in-app setting.

  • But it is not an accurate reflection of the overall location capabilities of the app.

  • The contrast between the green check on this screen, and the red Unknown status on the main screen could be a cause of user confusion.

 

Now the same as above, but with the settings configured before the install of the app. “Device” setting indicates


Location Settings & Choices

Observed

Expected?

Location Settings & Choices

Observed

Expected?

Device: on
Press “Enable Location”, then “Allow”

“All finished” screen shows a green tick for location access.

Main screen then shows Green

As above, this should be greay with direction to configure an HA. Known bug SAF-231

Device: on
Press “Enable Location”, then “Deny”

After pressing “Deny” I am routed back to the same screen until I press “Accept”, or “Skip this step”.

Only alternative would be to press “Don’t ask again” (see next row).

Behaviour seems good.

Device: on
Press “Enable Location”, then “Deny”, then “Don’t ask again”

“All finished” screen shows a red cross for location access.

Main screen shows Red: Unknown.

I am directed to the in-app setting (which is red), and set it to green. The redirect to the App permissions does not happen (presumably because I said “don’t ask again”, so status is still Red Unknown.

When I press “Enable Location Data” a 2nd time, I finally get taken to the APp Permissions screen, and we are good.

Having clicked “Enable Location”, then “Debny” and “Don’t ask again”, I would expect:

- In-App setting set to “on”

- App permissions not enabled.

That would avoid the weird experience of having to go through the Red; Unknown screen twice.

It seems that in this flow we don’t set the In-App setting to on during initial setup.. I think we should. (LOC-3)

Device: on
Press “Skip this Step”

Later, “Allow” when prompted.

“All finished” screen shows a red cross for location access.

Main screen shows Red: Unknown.

I am then directed to the dashboard to enable location, and then to the app settings.

All as expected.

Device: on
Press “Skip this Step”

Later, “Skip” when prompted.

“All finished” screen shows a red cross for location access.

Main screen shows Red: Unknown.

I am then directed to the dashboard to enable location, and then to the app settings.

When I deny, I end up on the dashboard with location aCtive / green tick. But when I go back to tha main screen I still se Red: Unknown.

Prompt on this screen guidees me to the right place to set my location permissions.

All good except that it’s slightly odd to see “Locatioon active / green tick” on the dashboard when the main screen still shows Red: Unknwon.

(LOC-4)

Device: off
Press “Enable Location”, then “Allow”

“All finished” screen shows a green tick for location access.

Main screen then shows Red Unknown, and asks me to Enable Location Data.

I should not see a green tick for location access. (LOC-4)

I should be routed to a screen that will actually help (device settings). (LOC-1)

Device: off
Press “Skip this Step”

“All finished” screen shows a red crossfor location access.

Main screen then shows Red Unknown, and asks me to Enable Location Data.

As expected given notes above, nothing ever routes me to the actual settings screen to enable Location on the device. (LOC-1)_

(there are several more “Device: off” cases, but until we put in some basic implemenntation to handle Device location being off, it’s not worth testing extensively. Very unlikely to turn up anything new.