Skip to content

Commit

Permalink
Merge branch '10094-upgrade-mobile-design-library' of https://github.…
Browse files Browse the repository at this point in the history
…com/department-of-veterans-affairs/va-mobile-app into 10094-upgrade-mobile-design-library
  • Loading branch information
cadibemma committed Nov 7, 2024
2 parents 794a1d0 + 2981a3b commit c01901e
Show file tree
Hide file tree
Showing 43 changed files with 1,080 additions and 404 deletions.
17 changes: 5 additions & 12 deletions .github/workflows/e2e_android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ jobs:
message: 'Starting E2E Android tests. Please see :thread: for results. This process may take a while.'

find_detox_tests_to_run:
if: github.event_name == 'pull_request' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
uses: ./.github/workflows/e2e_detox_mapping.yml

output_detox_tests_to_run:
Expand All @@ -99,8 +98,8 @@ jobs:
- name: 'Get Matrix Value'
id: matrix_value
run: |
if [[ "${{ inputs.run_full_test }}" == "true" ]] || [[ ${{ github.event_name }} == 'schedule' ]] || [[ "${{ inputs.tests_to_run}}" != "" ]]; then
if [[ "${{ inputs.run_full_test }}" == "true" ]] || [[ ${{ github.event_name }} == 'schedule' ]]; then
if [[ "${{ inputs.run_full_test }}" == "true" ]] || [[ ${{ github.event_name }} == 'schedule' ]] || [[ "${{ inputs.tests_to_run}}" != "" ]] || [[ "${{ github.event.pull_request.user.login }}" == "dependabot[bot]" ]]; then
if [[ "${{ inputs.run_full_test }}" == "true" ]] || [[ ${{ github.event_name }} == 'schedule' ]] || [[ "${{ github.event.pull_request.user.login }}" == "dependabot[bot]" ]]; then
e2eNames=$(gh api repos/department-of-veterans-affairs/va-mobile-app/contents/VAMobile/e2e/tests | jq --compact-output 'del(.[] | select(.name == "utils.ts")) | [.[].name]')
echo "matrix=$e2eNames" >> "$GITHUB_OUTPUT"
echo "individual_matrix=" >> "$GITHUB_OUTPUT"
Expand All @@ -116,7 +115,7 @@ jobs:
if [[ "${{ needs.find_detox_tests_to_run.outputs.test_run }}" != "" ]]; then
echo "${{needs.find_detox_tests_to_run.outputs.test_matrix}}"
if [[ "${{needs.find_detox_tests_to_run.outputs.test_matrix}}" == "[]" ]]; then
if [[ "${{ inputs.run_full_test }}" == "true" ]] || [[ ${{ github.event_name }} == 'schedule' ]]; then
if [[ "${{ inputs.run_full_test }}" == "true" ]] || [[ ${{ github.event_name }} == 'schedule' ]] || [[ "${{ github.event.pull_request.user.login }}" == "dependabot[bot]" ]]; then
e2eNames=$(gh api repos/department-of-veterans-affairs/va-mobile-app/contents/VAMobile/e2e/tests | jq --compact-output 'del(.[] | select(.name == "utils.ts")) | [.[].name]')
echo "matrix=$e2eNames" >> "$GITHUB_OUTPUT"
echo "individual_matrix=" >> "$GITHUB_OUTPUT"
Expand Down Expand Up @@ -242,7 +241,7 @@ jobs:
if: failure() || success()
uses: actions/upload-artifact@v4
with:
name: ${{matrix.testsuite}}-e2e-junit
name: e2e-junit-${{matrix.testsuite}}
path: VAMobile/e2e/test_reports/e2e-junit.xml

- name: Upload artifacts on failure
Expand Down Expand Up @@ -349,16 +348,10 @@ jobs:

matrix_send_test_results_to_testrail:
if: (!cancelled()) && github.event.inputs.run_testRail == 'true'
needs: [matrix-e2e-android, output_detox_tests_to_run]
strategy:
fail-fast: false
max-parallel: 1
matrix:
testsuite: ${{ fromJSON(needs.output_detox_tests_to_run.outputs.output1) }}
needs: [matrix-e2e-android, output_detox_tests_to_run]
name: Update testRail Results
uses: ./.github/workflows/update_testrail_results.yml
with:
test_names: "${{matrix.testsuite}}"
testRail_name: ${{ inputs.testRail_name }}
test_OS_name: "Android"
secrets: inherit
Expand Down
20 changes: 6 additions & 14 deletions .github/workflows/e2e_ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ jobs:
message: 'Starting E2E iOS tests. Please see :thread: for results. This process may take a while.'

find_detox_tests_to_run:
if: github.event_name == 'pull_request' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
uses: ./.github/workflows/e2e_detox_mapping.yml

output_detox_tests_to_run:
Expand All @@ -90,8 +89,8 @@ jobs:
- name: 'Get Matrix Value'
id: matrix_value
run: |
if [[ "${{ inputs.run_full_test }}" == "true" ]] || [[ ${{ github.event_name }} == 'schedule' ]] || [[ "${{ inputs.tests_to_run}}" != "" ]]; then
if [[ "${{ inputs.run_full_test }}" == "true" ]] || [[ ${{ github.event_name }} == 'schedule' ]]; then
if [[ "${{ inputs.run_full_test }}" == "true" ]] || [[ ${{ github.event_name }} == 'schedule' ]] || [[ "${{ inputs.tests_to_run}}" != "" ]] || [[ "${{ github.event.pull_request.user.login }}" == "dependabot[bot]" ]]; then
if [[ "${{ inputs.run_full_test }}" == "true" ]] || [[ ${{ github.event_name }} == 'schedule' ]] || [[ "${{ github.event.pull_request.user.login }}" == "dependabot[bot]" ]]; then
e2eNames=$(gh api repos/department-of-veterans-affairs/va-mobile-app/contents/VAMobile/e2e/tests | jq --compact-output 'del(.[] | select(.name == "utils.ts")) | [.[].name]')
echo "matrix=$e2eNames" >> "$GITHUB_OUTPUT"
echo "individual_matrix=" >> "$GITHUB_OUTPUT"
Expand All @@ -107,7 +106,7 @@ jobs:
if [[ "${{ needs.find_detox_tests_to_run.outputs.test_run }}" != "" ]]; then
echo "${{needs.find_detox_tests_to_run.outputs.test_matrix}}"
if [[ "${{needs.find_detox_tests_to_run.outputs.test_matrix}}" == "[]" ]]; then
if [[ "${{ inputs.run_full_test }}" == "true" ]] || [[ ${{ github.event_name }} == 'schedule' ]]; then
if [[ "${{ inputs.run_full_test }}" == "true" ]] || [[ ${{ github.event_name }} == 'schedule' ]] || [[ "${{ github.event.pull_request.user.login }}" == "dependabot[bot]" ]]; then
e2eNames=$(gh api repos/department-of-veterans-affairs/va-mobile-app/contents/VAMobile/e2e/tests | jq --compact-output 'del(.[] | select(.name == "utils.ts")) | [.[].name]')
echo "matrix=$e2eNames" >> "$GITHUB_OUTPUT"
echo "individual_matrix=" >> "$GITHUB_OUTPUT"
Expand Down Expand Up @@ -139,7 +138,6 @@ jobs:
IOS_PROJ_FILE: 'VAMobile.xcodeproj'
# Xcode scheme to build
IOS_SCHEME: 'VAMobileRelease'

strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -220,8 +218,8 @@ jobs:
if: failure() || success()
uses: actions/upload-artifact@v4
with:
name: ${{matrix.testsuite}}-e2e-junit
path: VAMobile/e2e/test_reports/e2e-junit.xml
name: e2e-junit-${{matrix.testsuite}}
path: VAMobile/e2e/test_reports/e2e-junit.xml

- name: Upload artifacts on failure
if: failure() || steps.run_e2e_tests.outcome == 'failure'
Expand Down Expand Up @@ -328,16 +326,10 @@ jobs:

matrix_send_test_results_to_testrail:
if: (!cancelled()) && github.event.inputs.run_testRail == 'true'
needs: [matrix-e2e-ios, output_detox_tests_to_run]
strategy:
fail-fast: false
max-parallel: 1
matrix:
testsuite: ${{ fromJSON(needs.output_detox_tests_to_run.outputs.output1) }}
needs: [matrix-e2e-ios, output_detox_tests_to_run]
name: Update testRail Results
uses: ./.github/workflows/update_testrail_results.yml
with:
test_names: "${{matrix.testsuite}}"
testRail_name: ${{ inputs.testRail_name }}
test_OS_name: "iOS"
secrets: inherit
Expand Down
31 changes: 16 additions & 15 deletions .github/workflows/update_testrail_results.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@ on:
description: "TestRail api key"
required: true
inputs:
test_names:
type: string
default: ''
testRail_name:
type: string
default: ''
Expand All @@ -39,7 +36,7 @@ jobs:
- name: Download junit file
uses: actions/download-artifact@v4
with:
name: ${{inputs.test_names}}-e2e-junit
pattern: e2e-junit-*
- name: 'Find run ID in testRail'
id: run-id-selection
run: |
Expand Down Expand Up @@ -86,15 +83,19 @@ jobs:
python-version: '3.x'
- name: TestRail CLI upload results
if: always()
run: |
run: |
pip install trcli
trcli -y \
-h https://dsvavsp.testrail.io/ \
--project "VA Mobile App" \
--project-id 29 \
-u ${{secrets.TEST_RAIL_USER}} \
-k ${{secrets.TEST_RAIL_KEY}} \
parse_junit \
--run-id ${{steps.run-id-selection.outputs.TEST_RUN_ID}} \
--section-id ${{steps.section-id-selection.outputs.SECTION_RUN_ID}} \
-f "/home/runner/work/va-mobile-app/va-mobile-app/e2e-junit.xml"
for dir in /home/runner/work/va-mobile-app/va-mobile-app/e2e-junit-*/; do
echo "$dir"
trcli -y \
-h https://dsvavsp.testrail.io/ \
--project "VA Mobile App" \
--project-id 29 \
-u ${{secrets.TEST_RAIL_USER}} \
-k ${{secrets.TEST_RAIL_KEY}} \
parse_junit \
--run-id ${{steps.run-id-selection.outputs.TEST_RUN_ID}} \
--section-id ${{steps.section-id-selection.outputs.SECTION_RUN_ID}} \
-f "${dir}e2e-junit.xml"
done
8 changes: 4 additions & 4 deletions VAMobile/android/Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ GEM
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.3.0)
aws-partitions (1.998.0)
aws-partitions (1.1001.0)
aws-sdk-core (3.211.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
Expand Down Expand Up @@ -127,7 +127,7 @@ GEM
google-apis-core (>= 0.11.0, < 2.a)
google-apis-firebaseappdistribution_v1alpha (0.2.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-iamcredentials_v1 (0.21.0)
google-apis-iamcredentials_v1 (0.22.0)
google-apis-core (>= 0.15.0, < 2.a)
google-apis-playcustomapp_v1 (0.16.0)
google-apis-core (>= 0.15.0, < 2.a)
Expand Down Expand Up @@ -160,7 +160,7 @@ GEM
domain_name (~> 0.5)
httpclient (2.8.3)
jmespath (1.6.2)
json (2.7.4)
json (2.7.6)
jwt (2.9.3)
base64
mini_magick (4.13.2)
Expand Down Expand Up @@ -205,7 +205,7 @@ GEM
uber (0.1.0)
unicode-display_width (2.6.0)
word_wrap (1.0.0)
xcodeproj (1.26.0)
xcodeproj (1.27.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
Expand Down
17 changes: 14 additions & 3 deletions VAMobile/documentation/design/About/designers.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,12 @@ Once you’ve loaded the library, you should be able to access everything in it

## Figma

VA mobile design teams at Ad Hoc use Figma to view, share, and collaborate on our work. Only designers actively working on products at VA can be added to Figma. Once you have been added, you may access the libraries in the cloud.
VA mobile app design teams use Figma to view, share, and collaborate on our work. Currently, only designers at Ad Hoc can be added as Editors to the Mobile App team's Figma account. If you're working on an external Experience Team and need access to our files, you can follow the steps below to be added as a Viewer.

### Get added to Figma

1. Go to [figma.com](https://www.figma.com/) and [create a Figma account](https://help.figma.com/hc/en-us/articles/360039811114-Create-a-Figma-account)
2. In the [#va-mobile-app-shared-systems](https://dsva.slack.com/archives/C05HF9ULKJ4) channel in Slack, ping a Figma admin (currently Jen Ecker and Jessica Woodin) requesting to be added.
2. In the [#va-mobile-app-shared-systems](https://dsva.slack.com/archives/C05HF9ULKJ4) channel in Slack, ping a Figma admin (currently Kelly Lein, Jessica Woodin, and Holly Collier) requesting to be added.
3. Receive the invite via email and accept the invitation.
4. Boom, you’re in!

Expand All @@ -65,4 +65,15 @@ Figma contains a few important features that help teams work together:
* You receive library updates automatically (a big advantage of using Figma)
* You can see what everyone else is working on in the VA workspace
* Developers can inspect any element on a page
* You can [create a branch](https://department-of-veterans-affairs.github.io/va-mobile-app/docs/UX/How-We-Work/figma-branching) of your file at any time
* You can [create a branch](https://department-of-veterans-affairs.github.io/va-mobile-app/docs/UX/How-We-Work/figma-branching) of your file at any time

### Designers on Experience Teams
Currently, designers on Experience Teams can only be added as Viewers in the **VA Mobile App's Figma account**. In order to use the Mobile App libraries in the **VA.gov Platform team's Figma account**, designers should follow the steps below.

1. In the [VA Mobile App team's Figma account](https://www.figma.com/files/827597988283174959/team/1114266503868297401), open the [Component Library](https://www.figma.com/design/Zzt8z60hCtdEzXx2GFWghH/%F0%9F%93%90-Component-Library---Design-System---VA-Mobile?m=auto&t=h1T1ozCx1hqbFSDa-7) and/or [Flagship Library](https://www.figma.com/design/QVLPB3eOunmKrgQOuOt0SU/Flagship-Library---%F0%9F%93%90-Resource---VA-Mobile?m=auto&t=h1T1ozCx1hqbFSDa-7).
2. Find the component you need.
3. Copy the component.
4. In the [VA.gov Platform team's Figma account](https://www.figma.com/files/team/1278375444205744118/all-projects), open your working file.
5. Paste the component into your working file.

If you have questions or need assistance, reach out in the [#va-mobile-app-shared-systems](https://dsva.slack.com/archives/C05HF9ULKJ4) channel.
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
title: Accessible Research Session Help
---

# Helpful tips for running an accessible research session

*Last update: November 4, 2024*

## Locating the VA: Health and Benefits app
With the recent update to iOS 18, users can now customize the appearance of their app icons without an additional shortcut or appearance customization app. There are options for light and dark mode for the app icons or to completely customize the color of the icons themselves. Prior to the update, we would have asked a sighted participant to locate the app icon with the white "VA" and blue background, however, a participant's app icon may no longer visually appear this way. On Android devices, it is also common for a user to customize their icons, font styles, etc. using shortcuts or apperance customization apps.

Instead of relying on the app icon's appearance to describe and verify that the participant has the VA: Health and Benefits app installed, you should consider building a few extra minutes into your research study plan to verify that the participant has the app by asking them to open the app and visually looking at the splash / login screen in their screen share.

If Perigean will be verifying this for you, notify your recruiter that they will need to request that the Veteran open the app and visually verify that they have the correct app installed. You should also consider supplying screenshots of the login screen to the recruiter in both dark and light modes, so that they have it to make the visual comparison themselves.

For screen reader participants who are using VoiceOver or TalkBack, no matter what color options or icon style they may have chosen to use on their device, both screen readers will still announce the app as "VA".


## ioS

### How to enable screen sharing in Zoom when using VoiceOver
1. In Zoom, navigate/swipe to the "share" (button) and double-tap
2. Double-tap on the first option: "screen" (button)
3. Double-tap on "start broadcast" (button)
- The participant will then hear a countdown (3, 2, 1) and the screen will begin broadcasting.

### Locating the VA: Health and Benefits mobile app

### Screen Curtain
When VoiceOver is active and the participant has begun sharing their screen with you, you may notice that the screen is black and that you cannot see anything that is being shared. This is called **screen curtain**. If a participant has screen curtain enabled, you will not be able to see anything on the participants' screen unless they disable it.

To disable screen curtain, instruct the participant to tap the screen four times using three fingers. This is called a three-finger quadruple tap.
- **Note:** If you instruct a user to turn off screen curtain during a session, offer to help them re-enable it before ending the session. Provide these instructions (the same instructions used to disable it) while they are still sharing their screen so that you can verify that screen curtain is re-enabled.

## Android

### How to enable screen sharing in Zoom when using TalkBack
1. By default, Zoom will typically default to "active speaker" mode. To display the toolbar, the participant can double-tap the screen with one finger.
2. Once the toolbar is displayed in Zoom, the particpant should navigate/swipe to the "share" (button) and double-tap
- _Share should be option 6 of 11 in the Zoom toolbar._
3. The participant should navigate through the list until they get to "screen" (this is usually the 6th option in the list) and double-tap.
4. The participant will then read out the disclaimer for sharing their screen. Instruct the participant to navigate to "start now" (button) and double-tap.
5. After sharing the screen, Zoom will usually take the user out of Zoom and back to their home screen (or the last screen they were on prior to joining the meeting). Instruct them to return to / open the Zoom app to be able to access the chat area and access the link to the build.
- **Note:** After the participant opens the Zoom app again, it will typically default them back to the share option (although it will now announce as "stop share").
- _Chat should be option 4 of 11 in the Zoom toolbar._

### Screen Curtain / Screen Shade
Some Android devices do have the ability to enable screen curtain on their device. If a participant has shared their screen with you during a session and their screen is black, dimmed, or is not changing, it is possible that their device support screen curtain and that it is enabled. Unfortunately, there is not a simple gesture availablet to disable screen curtain.

To disable screen curtain on an Android device, the participant should:
1. Triple-tap the screen once to open the TalkBack menu.
- **Note:** On some devices, the gesture to open the TalkBack menu may not be available or may not work. In this case, you should instruct the user to navigate to their TalkBack settings within their device settings (Settings > Accessibility > TalkBack).
2. Instruct the participant to locate an option for "screen curtain", "screen shade", "show screen", etc.
- **Note:** Depending on the participant's Android device manufacturer (Google, Samsung, etc.), this feature may have a different name or a different way of announcing / listing the feature. The participant should listen for an option that might impact the visibility of the device screen.
- Alternatively, they might also be ale to activate their voice assistant (Google Assistant, Bixby, etc.) and instruct the voice assistant to show their screen, disable screen shade/curtain, etc.
3. This step will depend on the participant's Android device, but after they have located the option for the screen curtain / shade, they should follow any necessary steps to show their screen / disable screen curtain. This could be a simple double-tap gesture to show the screen or could take them to their TalkBack settings where they may need to toggle off the screen curtain.
- **Note:** It is recommended that you ask the participant to talk you through the steps that they are taking to disable the screen shade / curtain and that you (or an observer) make a quick note so that you can help them reactivate it at the end of the session.

## Additional Resources
- [VoiceOver Gestures (iOS)](https://support.apple.com/guide/iphone/use-voiceover-gestures-iph3e2e2281/ios)
- [TalkBack Gestures (Android)](https://support.google.com/accessibility/android/answer/6151827?hl=en)
- [Inclusive Research for Screen Reader Users by Angela Fowler and Jamie Klenetsky Fay (Google Doc)](https://docs.google.com/document/d/1KvXZqzTm_Go1ZjzCmo8lNqe6Y2QOB9-9bt-RWsojGI0/edit?usp=sharing)
- **Note:** This guide is based on running inclusive research sessions with a computer and not on mobile devices. Not all of the information in the guide will apply to mobile-based research sessions.
Loading

0 comments on commit c01901e

Please sign in to comment.