* Update to RN 0.73
* Change files
* RN 73 requires node 18
* Add 72 profile
* Update wdio/appium etc to get it running on node 18
* fix
* fix
* Update podfile locks
* fix
* fix
* fix
* see if building fixes resolution of focus-zone by e2e tests
* Try specifying reports dir with full path
* Try debug level reporting to identify error creating logs
* try enabling more logs
* alternate way to specify logfile.
* downgrade @wdio/appium-service to move before https://github.com/webdriverio/webdriverio/pull/12095
* Test no-packager
* yarn init-test-app (With cleanup)
* Try install Java18
* fix
* fix
* Android E2E fixes
* fix?
* fix
* fix
* Add more logging for E2E android test failure
* more logs
* more log
* Use actual scroll region, to avoid OS swipe gestures
* Increase android time out to navigate to page
* fix
* remove extra try/catch and logging
* Fix windows build
* test windows PR without node install
---------
Co-authored-by: Saad Najmi <sanajmi@microsoft.com>
* Update apple-nuget-publish.yml
* Update apple-nuget-publish.yml
* Move publish variables to groups
* try
* Just use the bash script step
* Redo variables again
* and again
* more
* fix change
* Remove the quotes?
* oh...
* [CI] Update to macOS 13 / Xcode 15
* Dont pre boot simulator
* yarn dedupe
* (test) Determine iOS SDK version
* Degrade to iOS 16.4
* Test
* no boot
* macos too
* Back to iOS 17.0
* Update to react-native 0.71.14
* Downgrade to Xcode 14.2
* Undo yarn lock and package json changes
* more downgrade
* Switch back to internal
* more slight changes
* No android update.. again
* Bump react-native-svg: 12.3.0 -> 12.x
* Change files
* 12.x -> 12.4.4 in package.json
* Add Graphics.Win2D as a dependency
* Revert "Add Graphics.Win2D as a dependency"
This reverts commit 7f3899bd93458d90f1236cc0724b4955bf67d802.
* Win2D.UWP added as a dependency
* Update yarn.lock
* Bump experimental icon rnsvg
* Bumping rnsvg to 12.5
* Add script to add win2d as a ReactTestApp dependency
* Add win2d script to uwp ado pipeline
* Update script to add Win2D.uwp dependency
* Commit for pipeline testing
* Remove disk size checks, keep fetchDepth in ado
* Change files
* Run windows Pr validation step on larger VM
* Add + use patch-package for Win2D.uwp dependency
Patching react-native-test-app is now more stable than the previous
commit.
* Revert accidental change to a change file
Co-authored-by: Larry Win <winlarry@microsoft.com>
Co-authored-by: Danny van Velzen <dannyvv@microsoft.com>
* Yarn
* Merge
* Fixing repo
* Update package
* Merge
* Removing change file
* Moving all test assets to the same folder in /Common/
* Revert "Moving all test assets to the same folder in /Common/"
This reverts commit cb3ab14325.
* Adding initial ios testing
* Merging to upstream main
* Reverting back to upstream/main
* ios working
* Removed MacOS BasePage because we can use the same selector as Win32. No need for it anymore. All macOS tests running correctly
* Removing platform-specific NavigateAppPage. Now that the selectors are the same, we don't need separate ones
* Trimming down all component's PageObject to just ONE file. No need for platform-specific page objects anymore, since they all pull from the same selectors
* iOS and macOS both fully working
* Adding iOS to CI Pipeline
* Change files
* Reverting previous mistakes
* Reverting unwanted change
* Removing unwanted change
* Reverting podfile.lock
* Reverting podfile changes
* Adding additional comments
* Fix prettier
* Increasing iOS retry timeout. App takes longer to load because of emulator
* Increasing app connection timeout across the board
* Change files
* Improve display name's in .ado pipeline
* Improving ADO E2E logic to remove duplicate steps
* Fixing parameter in .ado
Co-authored-by: dev <dev@oe-mac-C07-C60ES-JYVY-checkout.selfhost.corp.microsoft.com>
* Yarn
* Merge
* Fixing repo
* Update package
* Merge
* Removing change file
* Moving all test assets to the same folder in /Common/
* Revert "Moving all test assets to the same folder in /Common/"
This reverts commit cb3ab14325.
* Win32 Tests Working
* Disabling macos and windows tests temporarily
* Change files
* Fix prettier
* Increase Jasmine default timeout
* Re-enabling macOS and Windows E2E tests in the CI
* Add more logging for E2E Tests
* Changing degree of logging for testing purposes in macos testing
* Reverting WDIO config files and improving code structure
* Re-adding mascos basepage
* Re-adding macOS Tests
* Reverting mistake change in Button/Checkbox
* Transforming WDIO hooks to async
* Reverting previous WDIO config file changes that were for testing
* Re-adding menu tests
* Adding back NativeTester tests
* Yarn
* Merge
* Fixing repo
* Update package
* Merge
* Removing change file
* Moving all test assets to the same folder in /Common/
* Revert "Moving all test assets to the same folder in /Common/"
This reverts commit cb3ab14325.
* Testing
* Updating yarn.lock
* Moving app maximize
* Testing
* Taking screenshots of every test
* Maximize app in spec instead of wdio
* The name of the FluentTester window changed with a new PR, so I'm updating the selector (this was causing an error)
* Adding back all the specs for testing
* Testing maximize app in the beforeSuite() hook so it gets called before every spec file
* Adding all macos specs to test
* Adding to readme about how to run MacOS e2e tests
* Revert previous .ado changes. Also improve publish artifacts logic because now Win32 reports/screenshots are in a different place than other platforms
* Fixing commenting error in .ado
* Fixing quotation error in .ado
* Adding '' to .ado file
* Change files
* Changing name of macOS job
* Trying to fix ado pipeline
* yarn prettier-fix
* PR Changes
* Nit: Spacing
* Nit: Grammer
* Nit: Comments
* Reverting previous testing change
* Reverting podfile.lock
* Improving comments and attempting to make a change to the CI: Start the RN Server in background bash
* Reverting ADO change that didn't work
* Reverting unwanted change
* Removing `yarn macos`
Want to see if the e2e tests can run without the server
* update fluent-tester
* delete others
* move FluentTester src
* yarn build works
* rnx-bundle works
* autolinking bug workaround + android
* windows works
* Update Apple CI
* More CI updates
* Update more CI
* update
* more updates
* More updates
* Change files
* maybe fix android
* fix ci?
* fix ci?
* ci
* setup emulator
* Remove expander
* More fixes
* The final countdown
* more fixes
* fix more links
* derp
* Change files
* Rearrange jobs and more fixes
* JS PR back to top
* remove flag that doesn't work
* Update android bundle name, enable single app mode
* forgot some
* Remove extra space
* update lock
* Update CI
* Remove Drawer from Fluent tester for now
* remove drawer again
* Change files
* Fix metro configs
* rerun `yarn configure-test-app` and add back some more metro config changes
* no expander
* update react dep + fix pipeline maybe
* delete duplicate job
* update yarn lock
* add back rnta
* Change files
* Move new tests
* Fix bundle
* update links + Podfile + delete podfile locks temporarily
* remove drawer again, add back locks
* Update apps/fluent-tester/package.json
Co-authored-by: Tommy Nguyen <4123478+tido64@users.noreply.github.com>
* Update apps/win32/package.json
Co-authored-by: Tommy Nguyen <4123478+tido64@users.noreply.github.com>
* Update apps/fluent-tester/metro.config.js
Co-authored-by: Tommy Nguyen <4123478+tido64@users.noreply.github.com>
* updates
* back to windows-2019
* merge
* remove --use-nuget
* Update .ado/azure-pipelines.yml
* Add back auto-lauch packager to ios/macos
Co-authored-by: Tommy Nguyen <4123478+tido64@users.noreply.github.com>
* New pipeline to test if links on the repo are working
* Adding command
* Testing different path
* Parameter to fail test
* Reverting change
* Testing another fail condition
* Missing fail error
* Testing different test failure
* testing out xargs
* Fixing broken links to pass test
* Fix broken link
* Change name of config file
Co-authored-by: Krystal Kramer <krsiler@microsoft.com>
* Only build and pack ship libraries
* test pipeline
* Remove yarn bundle from NuGet Publish as well
* Simplify pipelines a bit
* fix yml
* Comment out NuGet Publish from PR again
* Remove comment now that NuGet Publish is shorter
### Platforms Impacted
- [x] iOS
- [x] macOS
- [ ] win32 (Office)
- [ ] windows
- [ ] android
### Description of changes
This change refactors some of our native iOS and macOS code for better downstream integration into the office codebase.
Namely:
- Every native module's `<Component>-Bridging-Header.h` has been renamed to `<Component>ViewManager.h`.
- These files were never bridging headers, and cocoa pods / swift never interpreted them as such. There is potential to improve the RN docs on how to write a native swift module here as well.
- Adds the `BUILD_LIBRARY_FOR_DISTRIBUTION` flag to each native module's pod spec
- This flag allows for ABI stability in our swift static libraries. Note that the main side effect of this flag is it produces a `.swiftinterface` file in the static libraries' swift module. I do not include the swift module in the NuGet to be included downstream in office. In my testing I found it was not needed to get iOS NativeButton to link, so I opted not to include the swif module. This may change in the future as I try to figure out why the macOS NativeButton static library won't link.
- Adds the `OTHER_SWIFT_FLAGS=-gline-tables-only` flag to each native module's pod spec
- This is a potential security risk that is fixed, as per the comment here https://github.com/microsoft/fluentui-react-native/pull/710#discussion_r688016727 .
- removes the `CLANG_DEBUG_INFORMATION_LEVEL=line-tables-only` build flag
- This caused issues with the previous `BUILD_LIBRARY_FOR_DISTRIBUTION` flag and build failures. I'm not sure why.
- Sets the Swift version to 5.0
- I added this because I noticed that Azure pipelines would actually use the Swift 5.3.2 compiler, so I wanted to be explicit which version of swift we are compiling for.
Prior to this change, we could not link the NativeButton component downstream into office due to some linker issues. This change updates a few parts of our native iOS and macOS code such that we can now link the iOS NativeButton. The macOS NativeButton static library still does not properly link, I'll leave that as a followup.
### Verification
I had a local change downstream in office to consume an intermediate NuGet produced by this PR and test that linking worked. That's where I saw that iOS and not macOS works. Link for those who can see it: https://office.visualstudio.com/OE/_build/results?buildId=9621115&view=logs&j=4257c0a7-7659-5375-d6e0-cde9f28a3d36
### Pull request checklist
This PR has considered (when applicable):
- [x] Automated Tests
- [x] Documentation and examples
- [ ] Keyboard Accessibility
- [ ] Voiceover
- [ ] Internationalization and Right-to-left Layouts
### Platforms Impacted
- [x] iOS
- [ ] macOS
- [ ] win32 (Office)
- [ ] windows
- [ ] android
WIP to test pipeline / NuGet consumption.
### Description of changes
This change updates our Avatar component (which was a native module wrapping the FluentUI Apple Avatar) to use the new FluentUI Apple Vnext SwiftUI implementation of Avatar. I also cleaned up the test page for Avatar and made it look a lot nicer.
The change is non-trivial: It required me to define a new obbj-c class and macros to pass properties from Javascript to the SwiftUI View. The class will need to be implemented one per every new component. The macros can be reused by future SwiftUI components. The macros and implementation were inspired by https://betterprogramming.pub/react-native-meets-swiftui-d1606a8e1681
Explanation:
SwiftUI talks to normal Swift / obj-c through a proxy / viewWrapper class. The proxy class gives you access to a state object, and a UIView that contains the SwiftUI view. The important bit: You can access the view from the proxy class, but you cannot access the proxy class from the view.
```
Proxy Class (MSFAvatar)
|-> View (UIView wrapper around SwiftUI View)
|-> State (Used to set properties on the SwiftUI View)
```
This does not work well with React Native. React Native View Managers expect to be able to set properties directly on the view via the view class, and know not about this indirection through the proxy object. To solve this, I created an extension on the proxy class that I named `MSFAvatarStorage` that allows me to store a key value pair of view->proxy classes. This means that given a view, I can now look up it's proxy object, then access it's state object to set properties.
```
Proxy Class (MSFAvatar)
|-> View (UIView wrapper around the SwiftUI view)
|-> State (used to set properties on the SwiftUI view)
|-> Storage (view->proxy object mappings)
```
The last bit I needed was extra macros to actually do this indirection:
```
#define RCT_EXPORT_SWIFTUI_PROPERTY(name, type, proxyClass) \
RCT_REMAP_VIEW_PROPERTY(name, __custom__, type) \
- (void)set_##name:(id)json forView:(UIView *)view withDefaultView:(UIView *)defaultView RCT_DYNAMIC { \
NSMutableDictionary *storage = [proxyClass storage]; \
proxyClass *proxy = storage[[NSValue valueWithNonretainedObject:view]]; \
proxy.state.name = [RCTConvert type:json]; \
}
...
// In MSFAvatarViewManager
RCT_EXPORT_SWIFTUI_PROPERTY(primaryText, NSString, MSFAvatar)
```
And now we have a working SwiftUI based native component in React Native!
### Verification
Rewrote the test app to test the SwiftUI based props. They work!
https://user-images.githubusercontent.com/6722175/120049216-e7f26700-bfde-11eb-855f-c0d9f5ab4166.mov
### Pull request checklist
This PR has considered (when applicable):
- [ ] Automated Tests
- [x] Documentation and examples
- [ ] Keyboard Accessibility
- [ ] Voiceover
- [ ] Internationalization and Right-to-left Layouts
* Initial Commit
* Set up CI with Azure Pipelines
Comment out NPM package publish [skip ci]
* Update publish-nuget-job.yml
* Update publish-nuget-job.yml
* Try to use jobs
* Update azure-pipelines.publish.yml for Azure Pipelines
* Update azure-pipelines.publish.yml for Azure Pipelines
* Deleted broken templates
* Update azure-pipelines.publish.yml for Azure Pipelines
* No more matrixes
* Update azure-pipelines.publish.yml for Azure Pipelines
* more changes
* Update azure-pipelines.publish.yml for Azure Pipelines
* Update azure-pipelines.publish.yml for Azure Pipelines
* Update azure-pipelines.publish.yml for Azure Pipelines
* Update paths
* More updates
* Update
* Update azure-pipelines.publish.yml for Azure Pipelines
* Update azure-pipelines.publish.yml for Azure Pipelines
* Update azure-pipelines.publish.yml for Azure Pipelines
* revert using cocoapod task
* Forgot word
* Remove compiler optimizations
* simplify apple-xcode-build
* Use xcode 12
* typo
* Add bridging header to podspec
* nevermind
* Remove section from Podfile
* Try only one config
* Use xcodebuild instead of xcode task
* typo
* another typo
* remove extra args from xcconfig
* simulator passes, device doesnt. what about mac?
* Maybe 4 of 6 passing
* Try xcode task again
* typo
* Maybe all 6 with a signing id
* more explicit derived data path
* maybe no sign
* Clean up ordering / path
* Remove unnecessary stuff
* Dont use env variable in one template
* Switch to use the default version of xcode like we do in fluentui apple
* Bring over xcode select script
* Move pipeline specific scripts to .ado/scripts
* Update nuspec comments to specify bundles are release bundles
* initial lage init
* hook up build and test scripts via lage
* add full build support
* update new packages to use the new task runner
* update README with instructions on using Lage
* update commands executed in CI
* switch to using Lage for build sequencing
* Change files
* enable tests for FocusTrapZone
* turn on Link tests
* enable Stack tests
* add verbose output to full build task in CI
* add the verbose flag to the actual command this time
* split up build and bundle to handle resource failures
* rename full-build to buildci to be consistent with fabric, up memory limit in CI
* update README for buildci command
* try limiting concurrent processes for CI
* remove lerna dependency, leaving config file
* break up publish tasks to avoid failures
* try again to fix the CI
* fix lerna reference in README
* fix bad capitalization and try with full buildci command
* fix missing dep in contextual menu
* Yarn
* UWP Testing
* UWP testing working
* Increasing Timeouts for WebDriverIO and Jasmine to account for long bundle loads
* Change files
* CI Tests
* CI Loop UWP
* Fix
* small fix
* Small
* CI
* Added certificate for UWP test
* Small change
* Adding NuGet download in CI
* Adding Nuget Restore command
* Small fix
* Testing CI
* CI
* CI
* CI
* CI
* Changing powershell CI
* CI
* Nuget Restore
* CI
* CI
* Removing NuGet restore from CI
* Removing nuget install
* Copying RNW's Pipeline for UWP
* CI
* CI Test
* CI
* s
* Testing
* ci
* d
* s
* c
* ;
* f
* a
* Added Windows 10 SDK to CI
* SDK
* SDK
* SDK fix
* Adding Nuget Restore back
* Nuget
* Dir
* Dir
* d
* d
* Checking dir
* d
* Adding certifcate to store
* Certificate
* CI
* Testing
* Testing
* adding react-native-public feed
* Fix
* Removing nuget restore
* Install nuget
* Opening new CMD to run server
* Testing E2E
* Install Node
* Changing server start
* server
* ci
* Opening new CMD with Powershell to start server
* Testind
* no message
* Test
* Changing script path
* Changing powershell to inline
* Server
* Running app
* d
* Checking to see if cmd process' keeps running
* Checking still
* Fixing server
* Fix
* Seeing if app is running
* Kill FluentTester, leave server
* App stopped working
* Retry
* D
* Re-submitting
* Testing CI Failure
* CI Testing Succeeding
* Changing syntax to shortcuts
* Fixing syntax error
* Adding in Windows PR
* Format E2E UWP Testing
* Small
* Cleaned up code for PR
* Delete @fluentui-react-native-button-2020-05-21-15-50-20-sammy-UWP_E2E.json
* PR Fixes
* Comment fix
* Comment Fix
* PR Fixes
* Adding Node.JS and NuGet install to setup-repo template
* Updated comments
* Add more scripts to package.json, change name to FluentTester for parity with win32, update yml files
* Undo yarn lock changes
* Maybe I do need this change
* Add macOS/iOS RN deps, update CI
* Update CI steps to launch custom macos/ios packagers
* Update azure-pipelines.yml
* Update azure-pipelines.yml
* Syntax fixes to CI
* Rewrite the yml to fit ADO syntax. Split packagers into two shell scripts
Delete extraneous ios target
* Update apple-xcode-build.yml
* Remove extra vmimage reference
* Update yarn.lock
* Specify vmIage as macos within the job
* Fix path to podfiles
* Add more explicit description of pod install task
* bash var syntax
* Update apple-xcode-build.yml
* Update condition variable syntax
* update missed var name
* add yarn install to platform folders to install node_modules
* yarn install
* update path to build
* Build with rn commands instead of xcodebuild
* synax fix
* Update build settings and remove part of build infra to unblock
* Update mac test project
* Clean up view controller and app delegate code to load the bridge more succinctly
* Pull in the same version of rn for mac/ios
* Make the view controller our delegate
* Remove a pod we dont need until we're on 0.61
* Remove other pods that don't exist in 0.60
* Fix up more pod deps to match 0.60.0 instead of 0.62.0
* Remove flipper deps