From 87b70b10eb4b8a14921a11f31b7a43a4654c1e18 Mon Sep 17 00:00:00 2001 From: Annmarie Ziegler Date: Thu, 4 May 2023 11:07:50 -0400 Subject: [PATCH 1/2] Add internal release notes for new pages and activity log dashboard cards --- RELEASE-NOTES.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 73c459135524..316f2216ff84 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,6 +1,7 @@ 22.4 ----- - +* [**] [Jetpack-only] Adds a dashboard card for viewing activity log. [#20569] +* [**] [Jetpack-only] Adds a dashboard card for viewing pages. [#20524] 22.3 ----- From dfaa43cc8c9d05097e7006621990f0688d639910 Mon Sep 17 00:00:00 2001 From: Povilas Staskus Date: Mon, 8 May 2023 09:47:01 +0300 Subject: [PATCH 2/2] Domains Dashboard Card: Shorten the flow by immediately showing domain list (#20638) * Move creation of domains suggestions VC to DomainsDashboardFactory Move creation of RegisterDomainSuggestionsViewController and DomainCreditRedemptionSuccessViewController to a DomainsDashboardFactory so it could be reused * Only show cancel button in domains suggestions view controller if it's first in the navigation controller * Present domain suggestions from the domains dashboard card * Update UI tests * Update RELEASE-NOTES.txt * Update path to UITests in README.md * Add Domains navigation tests from Menu --- RELEASE-NOTES.txt | 2 ++ .../Domains/DashboardDomainsCardCell.swift | 6 ++-- ...omainSuggestionViewControllerWrapper.swift | 22 +------------ ...isterDomainSuggestionsViewController.swift | 11 ++++--- .../Views/DomainsDashboardCoordinator.swift | 12 ++++--- .../Views/DomainsDashboardFactory.swift | 21 ++++++++++++ WordPress/UITests/Tests/DashboardTests.swift | 2 +- .../UITests/Tests/MenuNavigationTests.swift | 28 ++++++++++++++++ .../Screens/DomainsSuggestionsScreen.swift | 32 +++++++++++++++++++ .../Screens/MySiteScreen.swift | 14 ++++++-- WordPress/WordPress.xcodeproj/project.pbxproj | 22 +++++++++---- docs/README.md | 2 +- 12 files changed, 131 insertions(+), 43 deletions(-) create mode 100644 WordPress/UITests/Tests/MenuNavigationTests.swift create mode 100644 WordPress/UITestsFoundation/Screens/DomainsSuggestionsScreen.swift diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 316f2216ff84..f50ad7e2b0d3 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,5 +1,7 @@ 22.4 ----- + +* [*] [internal] [Jetpack-only] Domains Dashboard Card: Immediately opening domains search after tapping the card. [#20638] * [**] [Jetpack-only] Adds a dashboard card for viewing activity log. [#20569] * [**] [Jetpack-only] Adds a dashboard card for viewing pages. [#20524] diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Domains/DashboardDomainsCardCell.swift b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Domains/DashboardDomainsCardCell.swift index 2bab75f623c9..8a7d27ba37a7 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Domains/DashboardDomainsCardCell.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Domains/DashboardDomainsCardCell.swift @@ -16,9 +16,9 @@ class DashboardDomainsCardCell: DashboardCollectionViewCell { return } - DomainsDashboardCoordinator.presentDomainsDashboard(in: presentingViewController, - source: Strings.source, - blog: blog) + DomainsDashboardCoordinator.presentDomainsSuggestions(in: presentingViewController, + source: Strings.source, + blog: blog) DomainsDashboardCardTracker.trackDirectDomainsPurchaseDashboardCardTapped(in: self.row) } diff --git a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/DomainSuggestionViewControllerWrapper.swift b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/DomainSuggestionViewControllerWrapper.swift index ad420d334c3d..4b4750c81485 100644 --- a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/DomainSuggestionViewControllerWrapper.swift +++ b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/DomainSuggestionViewControllerWrapper.swift @@ -15,33 +15,13 @@ struct DomainSuggestionViewControllerWrapper: UIViewControllerRepresentable { self.blog = blog self.domainType = domainType self.onDismiss = onDismiss - self.domainSuggestionViewController = RegisterDomainSuggestionsViewController.instance(site: blog, - domainType: domainType, - includeSupportButton: false) + self.domainSuggestionViewController = DomainsDashboardFactory.makeDomainsSuggestionViewController(blog: blog, domainType: domainType, onDismiss: onDismiss) } func makeUIViewController(context: Context) -> LightNavigationController { - let blogService = BlogService(coreDataStack: ContextManager.shared) - - self.domainSuggestionViewController.domainPurchasedCallback = { domain in - blogService.syncBlogAndAllMetadata(self.blog) { } - WPAnalytics.track(.domainCreditRedemptionSuccess) - self.presentDomainCreditRedemptionSuccess(domain: domain) - } - let navigationController = LightNavigationController(rootViewController: domainSuggestionViewController) return navigationController } func updateUIViewController(_ uiViewController: LightNavigationController, context: Context) { } - - private func presentDomainCreditRedemptionSuccess(domain: String) { - - let controller = DomainCreditRedemptionSuccessViewController(domain: domain) { _ in - self.domainSuggestionViewController.dismiss(animated: true) { - self.onDismiss() - } - } - domainSuggestionViewController.present(controller, animated: true) - } } diff --git a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainSuggestionsViewController.swift b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainSuggestionsViewController.swift index 01e434c96f90..7f9a4f1dfc4e 100644 --- a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainSuggestionsViewController.swift +++ b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainSuggestionsViewController.swift @@ -77,10 +77,13 @@ class RegisterDomainSuggestionsViewController: UIViewController { title = TextContent.title WPStyleGuide.configureColors(view: view, tableView: nil) - let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, - target: self, - action: #selector(handleCancelButtonTapped)) - navigationItem.leftBarButtonItem = cancelButton + /// If this is the first view controller in the navigation controller - show the cancel button + if navigationController?.children.count == 1 { + let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, + target: self, + action: #selector(handleCancelButtonTapped)) + navigationItem.leftBarButtonItem = cancelButton + } guard includeSupportButton else { return diff --git a/WordPress/Classes/ViewRelated/Domains/Views/DomainsDashboardCoordinator.swift b/WordPress/Classes/ViewRelated/Domains/Views/DomainsDashboardCoordinator.swift index eceb7f70fa7d..ceaf1c4a42f2 100644 --- a/WordPress/Classes/ViewRelated/Domains/Views/DomainsDashboardCoordinator.swift +++ b/WordPress/Classes/ViewRelated/Domains/Views/DomainsDashboardCoordinator.swift @@ -11,11 +11,13 @@ import UIKit presenter.presentBlogDetailsViewController(controller) } - static func presentDomainsDashboard(in dashboardViewController: BlogDashboardViewController, - source: String, - blog: Blog) { - WPAnalytics.trackEvent(.domainsDashboardViewed, properties: [WPAppAnalyticsKeySource: source], blog: blog) - let controller = DomainsDashboardFactory.makeDomainsDashboardViewController(blog: blog) + static func presentDomainsSuggestions(in dashboardViewController: BlogDashboardViewController, + source: String, + blog: Blog) { + let domainType: DomainType = blog.canRegisterDomainWithPaidPlan ? .registered : .siteRedirect + let controller = DomainsDashboardFactory.makeDomainsSuggestionViewController(blog: blog, domainType: domainType) { + dashboardViewController.navigationController?.popViewController(animated: true) + } controller.navigationItem.largeTitleDisplayMode = .never dashboardViewController.show(controller, sender: nil) } diff --git a/WordPress/Classes/ViewRelated/Domains/Views/DomainsDashboardFactory.swift b/WordPress/Classes/ViewRelated/Domains/Views/DomainsDashboardFactory.swift index 726d228a0659..889497a2e092 100644 --- a/WordPress/Classes/ViewRelated/Domains/Views/DomainsDashboardFactory.swift +++ b/WordPress/Classes/ViewRelated/Domains/Views/DomainsDashboardFactory.swift @@ -7,4 +7,25 @@ struct DomainsDashboardFactory { viewController.extendedLayoutIncludesOpaqueBars = true return viewController } + + static func makeDomainsSuggestionViewController(blog: Blog, domainType: DomainType, onDismiss: @escaping () -> Void) -> RegisterDomainSuggestionsViewController { + let viewController = RegisterDomainSuggestionsViewController.instance( + site: blog, + domainType: domainType, + includeSupportButton: false) + + viewController.domainPurchasedCallback = { domain in + let blogService = BlogService(coreDataStack: ContextManager.shared) + blogService.syncBlogAndAllMetadata(blog) { } + WPAnalytics.track(.domainCreditRedemptionSuccess) + let controller = DomainCreditRedemptionSuccessViewController(domain: domain) { _ in + viewController.dismiss(animated: true) { + onDismiss() + } + } + viewController.present(controller, animated: true) + } + + return viewController + } } diff --git a/WordPress/UITests/Tests/DashboardTests.swift b/WordPress/UITests/Tests/DashboardTests.swift index 976997f85459..27d2d9e4b2c7 100644 --- a/WordPress/UITests/Tests/DashboardTests.swift +++ b/WordPress/UITests/Tests/DashboardTests.swift @@ -24,6 +24,6 @@ class DashboardTests: XCTestCase { .scrollToDomainsCard() .verifyDomainsCard() .tapDomainsCard() - .verifyDomainsScreenLoaded() + .verifyDomainsSuggestionsScreenLoaded() } } diff --git a/WordPress/UITests/Tests/MenuNavigationTests.swift b/WordPress/UITests/Tests/MenuNavigationTests.swift new file mode 100644 index 000000000000..bfbbb34a9185 --- /dev/null +++ b/WordPress/UITests/Tests/MenuNavigationTests.swift @@ -0,0 +1,28 @@ +import UITestsFoundation +import XCTest + +final class MenuNavigationTests: XCTestCase { + + override func setUpWithError() throws { + setUpTestSuite() + + try LoginFlow.login( + siteUrl: WPUITestCredentials.testWPcomSiteAddress, + email: WPUITestCredentials.testWPcomUserEmail, + password: WPUITestCredentials.testWPcomPassword + ) + } + + override func tearDownWithError() throws { + takeScreenshotOfFailedTest() + removeApp() + } + + // This test is JP only. + func testDomainsNavigation() throws { + try MySiteScreen() + .goToMenu() + .goToDomainsScreen() + .verifyDomainsScreenLoaded() + } +} diff --git a/WordPress/UITestsFoundation/Screens/DomainsSuggestionsScreen.swift b/WordPress/UITestsFoundation/Screens/DomainsSuggestionsScreen.swift new file mode 100644 index 000000000000..def69b4f31cb --- /dev/null +++ b/WordPress/UITestsFoundation/Screens/DomainsSuggestionsScreen.swift @@ -0,0 +1,32 @@ +import ScreenObject +import XCTest + +public class DomainsSuggestionsScreen: ScreenObject { + public let tabBar: TabNavComponent + + let siteDomainsNavbarHeaderGetter: (XCUIApplication) -> XCUIElement = { + $0.staticTexts["Search domains"] + } + + var siteDomainsNavbarHeader: XCUIElement { siteDomainsNavbarHeaderGetter(app) } + + public init(app: XCUIApplication = XCUIApplication()) throws { + tabBar = try TabNavComponent() + + try super.init( + expectedElementGetters: [ siteDomainsNavbarHeaderGetter ], + app: app, + waitTimeout: 7 + ) + } + + public static func isLoaded() -> Bool { + (try? DomainsSuggestionsScreen().isLoaded) ?? false + } + + @discardableResult + public func verifyDomainsSuggestionsScreenLoaded() -> Self { + XCTAssertTrue(DomainsSuggestionsScreen.isLoaded(), "\"Domains suggestions\" screen isn't loaded.") + return self + } +} diff --git a/WordPress/UITestsFoundation/Screens/MySiteScreen.swift b/WordPress/UITestsFoundation/Screens/MySiteScreen.swift index ad318a810b80..e1530952ad30 100644 --- a/WordPress/UITestsFoundation/Screens/MySiteScreen.swift +++ b/WordPress/UITestsFoundation/Screens/MySiteScreen.swift @@ -13,6 +13,7 @@ private struct ElementStringIDs { static let statsButton = "Stats Row" static let peopleButton = "People Row" static let settingsButton = "Settings Row" + static let domainsButton = "Domains Row" static let createButton = "floatingCreateButton" static let ReaderButton = "Reader" static let switchSiteButton = "SwitchSiteButton" @@ -64,6 +65,10 @@ public class MySiteScreen: ScreenObject { $0.buttons[ElementStringIDs.domainsCardHeaderButton] } + let domainsButtonGetter: (XCUIApplication) -> XCUIElement = { + $0.cells[ElementStringIDs.domainsButton] + } + var domainsCardButton: XCUIElement { domainsCardButtonGetter(app) } static var isVisible: Bool { @@ -158,6 +163,11 @@ public class MySiteScreen: ScreenObject { return self } + public func goToDomainsScreen() throws -> DomainsScreen { + app.cells[ElementStringIDs.domainsButton].tap() + return try DomainsScreen() + } + @discardableResult public func goToMenu() -> Self { // On iPad, the menu items are already listed on screen, so we don't need to tap the menu button @@ -188,9 +198,9 @@ public class MySiteScreen: ScreenObject { } @discardableResult - public func tapDomainsCard() throws -> DomainsScreen { + public func tapDomainsCard() throws -> DomainsSuggestionsScreen { domainsCardButton.tap() - return try DomainsScreen() + return try DomainsSuggestionsScreen() } @discardableResult diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index e66d539178a2..8343a00b8711 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -147,6 +147,9 @@ 011896A629D5B72500D34BA9 /* DomainsDashboardCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011896A429D5B72500D34BA9 /* DomainsDashboardCoordinator.swift */; }; 011896A829D5BBB400D34BA9 /* DomainsDashboardFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011896A729D5BBB400D34BA9 /* DomainsDashboardFactory.swift */; }; 011896A929D5BBB400D34BA9 /* DomainsDashboardFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011896A729D5BBB400D34BA9 /* DomainsDashboardFactory.swift */; }; + 01281E9A2A0456CB00464F8F /* DomainsSuggestionsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01281E992A0456CB00464F8F /* DomainsSuggestionsScreen.swift */; }; + 01281E9C2A051EEA00464F8F /* MenuNavigationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01281E9B2A051EEA00464F8F /* MenuNavigationTests.swift */; }; + 01281E9D2A051EEA00464F8F /* MenuNavigationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01281E9B2A051EEA00464F8F /* MenuNavigationTests.swift */; }; 0141929C2983F0A300CAEDB0 /* SupportConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0141929B2983F0A300CAEDB0 /* SupportConfiguration.swift */; }; 0141929D2983F0A300CAEDB0 /* SupportConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0141929B2983F0A300CAEDB0 /* SupportConfiguration.swift */; }; 014192A02983F5E800CAEDB0 /* SupportConfigurationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0141929F2983F5E800CAEDB0 /* SupportConfigurationTests.swift */; }; @@ -5766,6 +5769,8 @@ 011896A429D5B72500D34BA9 /* DomainsDashboardCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomainsDashboardCoordinator.swift; sourceTree = ""; }; 011896A729D5BBB400D34BA9 /* DomainsDashboardFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomainsDashboardFactory.swift; sourceTree = ""; }; 011A2815DB0DE7E3973CBC0E /* Pods-Apps-Jetpack.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Apps-Jetpack.release.xcconfig"; path = "../Pods/Target Support Files/Pods-Apps-Jetpack/Pods-Apps-Jetpack.release.xcconfig"; sourceTree = ""; }; + 01281E992A0456CB00464F8F /* DomainsSuggestionsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomainsSuggestionsScreen.swift; sourceTree = ""; }; + 01281E9B2A051EEA00464F8F /* MenuNavigationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuNavigationTests.swift; sourceTree = ""; }; 0141929B2983F0A300CAEDB0 /* SupportConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportConfiguration.swift; sourceTree = ""; }; 0141929F2983F5E800CAEDB0 /* SupportConfigurationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportConfigurationTests.swift; sourceTree = ""; }; 0147D64D294B1E1600AA6410 /* StatsRevampStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsRevampStore.swift; sourceTree = ""; }; @@ -10351,7 +10356,7 @@ path = Classes; sourceTree = ""; }; - 29B97314FDCFA39411CA2CEA = { + 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( 3F20FDF3276BF21000DA3CAD /* Packages */, @@ -11483,6 +11488,7 @@ BE6DD32F1FD67F3B00E55192 /* TabNavComponent.swift */, EAD08D0D29D45E23001A72F9 /* CommentsScreen.swift */, D82E087729EEB7AF0098F500 /* DomainsScreen.swift */, + 01281E992A0456CB00464F8F /* DomainsSuggestionsScreen.swift */, ); path = Screens; sourceTree = ""; @@ -15513,6 +15519,7 @@ CC2BB0CF228ACF710034F9AB /* EditorGutenbergTests.swift */, EAD2BF4127594DAB00A847BB /* StatsTests.swift */, D82E087429EEB0B00098F500 /* DashboardTests.swift */, + 01281E9B2A051EEA00464F8F /* MenuNavigationTests.swift */, ); path = Tests; sourceTree = ""; @@ -18634,14 +18641,14 @@ bg, sk, ); - mainGroup = 29B97314FDCFA39411CA2CEA; + mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; packageReferences = ( 3FF1442E266F3C2400138163 /* XCRemoteSwiftPackageReference "ScreenObject" */, 3FC2C33B26C4CF0A00C6D98F /* XCRemoteSwiftPackageReference "XCUITestHelpers" */, 17A8858B2757B97F0071FCA3 /* XCRemoteSwiftPackageReference "AutomatticAbout-swift" */, 3F2B62DA284F4E0B0008CD59 /* XCRemoteSwiftPackageReference "Charts" */, 3F3B23C02858A1B300CACE60 /* XCRemoteSwiftPackageReference "test-collector-swift" */, - 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios.git" */, + 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios" */, 3F338B6F289BD3040014ADC5 /* XCRemoteSwiftPackageReference "Nimble" */, ); productRefGroup = 19C28FACFE9D520D11CA2CBB /* Products */; @@ -22596,6 +22603,7 @@ 3F762E9726784BED0088CD45 /* FancyAlertComponent.swift in Sources */, 3F2F854226FAEA50000FCDA5 /* JetpackScanScreen.swift in Sources */, 3F2F855A26FAF227000FCDA5 /* EditorNoticeComponent.swift in Sources */, + 01281E9A2A0456CB00464F8F /* DomainsSuggestionsScreen.swift in Sources */, 3F2F855D26FAF227000FCDA5 /* LoginCheckMagicLinkScreen.swift in Sources */, EA78189427596B2F00554DFA /* ContactUsScreen.swift in Sources */, D82E087829EEB7AF0098F500 /* DomainsScreen.swift in Sources */, @@ -23496,6 +23504,7 @@ EA14533129AD874C001F3143 /* WPUITestCredentials.swift in Sources */, EA14533229AD874C001F3143 /* SignupTests.swift in Sources */, EA14533329AD874C001F3143 /* EditorFlow.swift in Sources */, + 01281E9D2A051EEA00464F8F /* MenuNavigationTests.swift in Sources */, EA14533429AD874C001F3143 /* UIApplication+mainWindow.swift in Sources */, EA14533529AD874C001F3143 /* LoginFlow.swift in Sources */, EA14533629AD874C001F3143 /* XCTest+Extensions.swift in Sources */, @@ -25419,6 +25428,7 @@ CC8A5EAB22159FA6001B7874 /* WPUITestCredentials.swift in Sources */, CC7CB97322B1510900642EE9 /* SignupTests.swift in Sources */, CC52188C2278C622008998CE /* EditorFlow.swift in Sources */, + 01281E9C2A051EEA00464F8F /* MenuNavigationTests.swift in Sources */, 8B5FEAF125A746CB000CBFF7 /* UIApplication+mainWindow.swift in Sources */, BED4D8331FF11E3800A11345 /* LoginFlow.swift in Sources */, FF2716A11CABC7D40006E2D4 /* XCTest+Extensions.swift in Sources */, @@ -30355,7 +30365,7 @@ minimumVersion = 0.3.0; }; }; - 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios.git" */ = { + 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/airbnb/lottie-ios.git"; requirement = { @@ -30436,12 +30446,12 @@ }; 3F411B6E28987E3F002513AE /* Lottie */ = { isa = XCSwiftPackageProductDependency; - package = 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios.git" */; + package = 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios" */; productName = Lottie; }; 3F44DD57289C379C006334CD /* Lottie */ = { isa = XCSwiftPackageProductDependency; - package = 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios.git" */; + package = 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios" */; productName = Lottie; }; 3FC2C33C26C4CF0A00C6D98F /* XCUITestHelpers */ = { diff --git a/docs/README.md b/docs/README.md index 4232199251aa..72e8eef5d740 100644 --- a/docs/README.md +++ b/docs/README.md @@ -16,7 +16,7 @@ ## Testing -- [UI Tests](../WordPress/WordPressUITests) +- [UI Tests](../WordPress/UITests) ## Others