Skip to content

Commit 6c1ecdc

Browse files
authored
Merge pull request #3226 from instructure/release/teacher-2.0.0-81
Release Teacher 2.0.0 (81)
2 parents 1100263 + 5dc06be commit 6c1ecdc

File tree

764 files changed

+59900
-6088
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

764 files changed

+59900
-6088
lines changed

apps/buildSrc/src/main/java/GlobalDependencies.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ object Libs {
128128
const val VIEW_MODE_SAVED_STATE = "androidx.lifecycle:lifecycle-viewmodel-savedstate:${Versions.LIFECYCLE}"
129129
const val LIFECYCLE_COMPILER = "androidx.lifecycle:lifecycle-compiler:${Versions.LIFECYCLE}"
130130
const val COMPOSE_VIEW_MODEL = "androidx.lifecycle:lifecycle-viewmodel-compose:${Versions.LIFECYCLE}"
131+
const val COMPOSE_NAVIGATION = "androidx.navigation:navigation-compose:2.8.9"
131132

132133
/* Media and content handling */
133134
const val PSPDFKIT = "com.pspdfkit:pspdfkit:${Versions.PSPDFKIT}"
@@ -188,7 +189,11 @@ object Libs {
188189
const val COMPOSE_UI = "androidx.compose.ui:ui-android"
189190
const val COMPOSE_UI_TEST = "androidx.compose.ui:ui-test-junit4"
190191
const val COMPOSE_UI_TEST_MANIFEST = "androidx.compose.ui:ui-test-manifest"
191-
const val COMPOSE_MATERIAL_3 = "androidx.compose.material3:material3"
192+
const val COMPOSE_MATERIAL_3 = "androidx.compose.material3:material3:1.4.0-alpha12"
193+
const val COMPOSE_ADAPTIVE = "androidx.compose.material3.adaptive:adaptive"
194+
const val COMPOSE_MATERIAL3_WINDOW_SIZE = "androidx.compose.material3:material3-window-size-class"
195+
const val COMPOSE_NAVIGATION_HILT = "androidx.hilt:hilt-navigation-compose:1.2.0"
196+
const val COMPOSE_FRAGMENT = "androidx.fragment:fragment-compose:1.8.6"
192197

193198
// Glance
194199
const val GLANCE = "androidx.glance:glance:${Versions.GLANCE}"

apps/parent/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ android {
4040
applicationId "com.instructure.parentapp"
4141
minSdkVersion Versions.MIN_SDK
4242
targetSdkVersion Versions.TARGET_SDK
43-
versionCode 59
44-
versionName "4.3.0"
43+
versionCode 60
44+
versionName "4.4.0"
4545

4646
buildConfigField "boolean", "IS_TESTING", "false"
4747
testInstrumentationRunner 'com.instructure.parentapp.ui.espresso.ParentHiltTestRunner'

apps/parent/src/androidTest/java/com/instructure/parentapp/ui/compose/notaparent/NotAParentScreenTest.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import androidx.compose.ui.test.assertIsDisplayed
2222
import androidx.compose.ui.test.assertIsNotDisplayed
2323
import androidx.compose.ui.test.hasText
2424
import androidx.compose.ui.test.junit4.createComposeRule
25+
import androidx.compose.ui.test.onNodeWithContentDescription
2526
import androidx.compose.ui.test.onNodeWithTag
2627
import androidx.compose.ui.test.onNodeWithText
2728
import androidx.compose.ui.test.performClick
@@ -78,11 +79,11 @@ class NotAParentScreenTest {
7879
scrollToText("Are you a student or teacher?")
7980

8081
composeTestRule.onNodeWithText("Are you a student or teacher?").performClick()
81-
composeTestRule.onNodeWithText("STUDENT")
82+
composeTestRule.onNodeWithContentDescription("Canvas")
8283
.performScrollTo()
8384
.assertIsDisplayed()
8485
.assertHasClickAction()
85-
composeTestRule.onNodeWithText("TEACHER")
86+
composeTestRule.onNodeWithContentDescription("Canvas Teacher")
8687
.performScrollTo()
8788
.assertIsDisplayed()
8889
.assertHasClickAction()

apps/parent/src/androidTest/java/com/instructure/parentapp/ui/e2e/AssignmentDetailsE2ETest.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import com.instructure.dataseeding.util.days
3131
import com.instructure.dataseeding.util.fromNow
3232
import com.instructure.dataseeding.util.iso8601
3333
import com.instructure.espresso.ViewUtils
34+
import com.instructure.espresso.retryWithIncreasingDelay
3435
import com.instructure.parentapp.utils.ParentComposeTest
3536
import com.instructure.parentapp.utils.seedData
3637
import com.instructure.parentapp.utils.tokenLogin
@@ -95,7 +96,9 @@ class AssignmentDetailsE2ETest : ParentComposeTest() {
9596
courseDetailsPage.assertCourseNameDisplayed(course)
9697

9798
Log.d(STEP_TAG, "Click on the '${testAssignment.name}' assignment to open it's details.")
98-
courseDetailsPage.clickAssignment(testAssignment.name)
99+
retryWithIncreasingDelay {
100+
courseDetailsPage.clickAssignment(testAssignment.name)
101+
}
99102

100103
Log.d(ASSERTION_TAG, "Assert that the toolbar title is 'Assignment Details' as the user is on the assignment details page and the subtitle is the '${course.name}' course's name.")
101104
assignmentDetailsPage.assertDisplayToolbarTitle()

apps/parent/src/androidTest/java/com/instructure/parentapp/ui/e2e/AssignmentReminderE2ETest.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import com.instructure.dataseeding.util.ago
3232
import com.instructure.dataseeding.util.days
3333
import com.instructure.dataseeding.util.fromNow
3434
import com.instructure.dataseeding.util.iso8601
35+
import com.instructure.espresso.retryWithIncreasingDelay
3536
import com.instructure.pandautils.utils.toFormattedString
3637
import com.instructure.parentapp.R
3738
import com.instructure.parentapp.utils.ParentComposeTest
@@ -81,7 +82,9 @@ class AssignmentReminderE2ETest: ParentComposeTest() {
8182
courseDetailsPage.assertCourseNameDisplayed(course)
8283

8384
Log.d(STEP_TAG, "Click on assignment '${testAssignment.name}'.")
84-
courseDetailsPage.clickAssignment(testAssignment.name)
85+
retryWithIncreasingDelay {
86+
courseDetailsPage.clickAssignment(testAssignment.name)
87+
}
8588

8689
Log.d(ASSERTION_TAG, "Assert that the toolbar title is 'Assignment Details' as the user is on the assignment details page and the subtitle is the '${course.name}' course's name.")
8790
assignmentDetailsPage.assertDisplayToolbarTitle()
@@ -203,7 +206,9 @@ class AssignmentReminderE2ETest: ParentComposeTest() {
203206
courseDetailsPage.assertCourseNameDisplayed(course)
204207

205208
Log.d(STEP_TAG, "Click on assignment '${testAssignment.name}'.")
206-
courseDetailsPage.clickAssignment(testAssignment.name)
209+
retryWithIncreasingDelay {
210+
courseDetailsPage.clickAssignment(testAssignment.name)
211+
}
207212

208213
Log.d(ASSERTION_TAG, "Assert that the toolbar title is 'Assignment Details' as the user is on the assignment details page and the subtitle is the '${course.name}' course's name.")
209214
assignmentDetailsPage.assertDisplayToolbarTitle()

apps/parent/src/androidTest/java/com/instructure/parentapp/ui/e2e/GradesListE2ETest.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,10 @@ class GradesListE2ETest : ParentComposeTest() {
9494
courseDetailsPage.assertCourseNameDisplayed(course) //Course Details Page is actually the Grades page by default when there are no tabs.
9595

9696
Log.d(ASSERTION_TAG, "Assert that the Grades Card text is 'Total' by default and the 'Based on graded assignments' label is displayed.")
97-
gradesPage.assertCardText("Total")
98-
gradesPage.assertBasedOnGradedAssignmentsLabel()
97+
retryWithIncreasingDelay(times = 10, maxDelay = 3000) {
98+
gradesPage.assertCardText("Total")
99+
gradesPage.assertBasedOnGradedAssignmentsLabel()
100+
}
99101

100102
Log.d(ASSERTION_TAG, "Assert that the group header 'Upcoming Assignments' is displayed since the '${testAssignment.name}' assignment's due date is in the future and it's already graded.")
101103
gradesPage.assertGroupHeaderIsDisplayed("Upcoming Assignments")

apps/parent/src/androidTest/java/com/instructure/parentapp/ui/e2e/HelpMenuE2ETest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class HelpMenuE2ETest : ParentComposeTest() {
7171
Log.d(ASSERTION_TAG, "Assert that the 'Report a Problem' dialog has displayed.")
7272
helpPage.assertReportProblemDialogDisplayed()
7373

74-
Log.d(STEP_TAG, "Click on 'Cancel' button on the 'Report a problem' dialog.")
74+
Log.d(ASSERTION_TAG, "Click on 'Cancel' button on the 'Report a problem' dialog.")
7575
helpPage.clickCancelReportProblem()
7676

7777
Log.d(ASSERTION_TAG, "Assert that when clicking on the different help menu items then the corresponding intents will be fired and has the proper URLs.")

apps/parent/src/androidTest/java/com/instructure/parentapp/ui/e2e/InboxE2ETest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import androidx.test.espresso.matcher.ViewMatchers
2323
import com.instructure.canvas.espresso.E2E
2424
import com.instructure.canvas.espresso.FeatureCategory
2525
import com.instructure.canvas.espresso.Priority
26+
import com.instructure.canvas.espresso.Stub
2627
import com.instructure.canvas.espresso.TestCategory
2728
import com.instructure.canvas.espresso.TestMetaData
2829
import com.instructure.canvas.espresso.refresh
@@ -53,6 +54,7 @@ class InboxE2ETest: ParentComposeTest() {
5354
@E2E
5455
@Test
5556
@TestMetaData(Priority.MANDATORY, FeatureCategory.INBOX, TestCategory.E2E)
57+
@Stub
5658
fun testInboxSelectedButtonActionsE2E() {
5759

5860
Log.d(PREPARATION_TAG, "Seeding data.")

apps/parent/src/androidTest/java/com/instructure/parentapp/ui/e2e/LoginE2ETest.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.instructure.canvas.espresso.E2E
2121
import com.instructure.canvas.espresso.FeatureCategory
2222
import com.instructure.canvas.espresso.Priority
2323
import com.instructure.canvas.espresso.SecondaryFeatureCategory
24+
import com.instructure.canvas.espresso.Stub
2425
import com.instructure.canvas.espresso.TestCategory
2526
import com.instructure.canvas.espresso.TestMetaData
2627
import com.instructure.canvasapi2.utils.ApiPrefs
@@ -395,4 +396,17 @@ class LoginE2ETest : ParentComposeTest() {
395396
manageStudentsPage.assertEmptyContent()
396397
}
397398

399+
@Test
400+
@Stub("Stubbed because there was some change on 7th or 8th of July, 2025 and on the CI it loads an invalid URL page, however the test runs locally.")
401+
@E2E
402+
@TestMetaData(Priority.IMPORTANT, FeatureCategory.LOGIN, TestCategory.E2E, SecondaryFeatureCategory.CANVAS_NETWORK)
403+
fun testCanvasNetworkSignInPageE2E() {
404+
405+
Log.d(STEP_TAG, "Click on the 'Canvas Network' link on the Login Landing Page to open the Canvas Network Page (learn.canvas.net).")
406+
loginLandingPage.clickCanvasNetworkButton()
407+
408+
Log.d(ASSERTION_TAG, "Assert that the Canvas Network Page has been displayed.")
409+
canvasNetworkSignInPage.assertPageObjects()
410+
}
411+
398412
}

apps/parent/src/androidTest/java/com/instructure/parentapp/ui/e2e/SettingsE2ETest.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import com.instructure.dataseeding.util.days
3333
import com.instructure.dataseeding.util.fromNow
3434
import com.instructure.dataseeding.util.iso8601
3535
import com.instructure.espresso.ViewUtils
36+
import com.instructure.espresso.retryWithIncreasingDelay
3637
import com.instructure.pandautils.utils.AppTheme
3738
import com.instructure.parentapp.R
3839
import com.instructure.parentapp.utils.ParentComposeTest
@@ -84,8 +85,10 @@ class SettingsE2ETest : ParentComposeTest() {
8485
Log.d(STEP_TAG, "Select '${course.name}' course.")
8586
coursesPage.clickCourseItem(course.name)
8687

87-
Log.d(ASSERTION_TAG, "Assert on the Course Browser Page that the assignment label has the proper text color (which is used in Dark mode).")
88-
courseDetailsPage.assertAssignmentLabelTextColor(testAssignment.name,0xFFFFFFFF)
88+
retryWithIncreasingDelay(times = 5) {
89+
Log.d(ASSERTION_TAG, "Assert on the Course Browser Page that the assignment label has the proper text color (which is used in Dark mode).")
90+
courseDetailsPage.assertAssignmentLabelTextColor(testAssignment.name,0xFFFFFFFF)
91+
}
8992

9093
Log.d(STEP_TAG, "Navigate back and open the Left Side Navigation Drawer menu.")
9194
Espresso.pressBack()
@@ -106,8 +109,10 @@ class SettingsE2ETest : ParentComposeTest() {
106109
Log.d(STEP_TAG, "Select '${course.name}' course.")
107110
coursesPage.clickCourseItem(course.name)
108111

109-
Log.d(ASSERTION_TAG, "Assert on the Course Browser Page that the assignment label has the proper text color (which is used in Dark mode).")
110-
courseDetailsPage.assertAssignmentLabelTextColor(testAssignment.name,0xFF273540)
112+
retryWithIncreasingDelay(times = 5) {
113+
Log.d(ASSERTION_TAG, "Assert on the Course Browser Page that the assignment label has the proper text color (which is used in Dark mode).")
114+
courseDetailsPage.assertAssignmentLabelTextColor(testAssignment.name,0xFF273540)
115+
}
111116
}
112117

113118
@E2E

0 commit comments

Comments
 (0)