Commit Graph

23 Commits

Author SHA1 Message Date
Pranav K 0e5d7ef1d4
Attempt to read the logs from the browser (#26289)
* Attempt to read the logs from the browser

Seleniunm currently does not return log messages (See https://github.com/SeleniumHQ/selenium/issues/8229).
This making figuring out blazor WASM test failures a lot harder.

This change adds some JS to the test apps to read the console output.

* WIP
2020-09-28 17:07:22 -07:00
Safia Abdalla 8fc1419186
Make OnNavigateAsync EventCallback and cancel previous navigation (#25011)
* Make OnNavigateAsync EventCallback and cancel previous navigation

* Add more tests
2020-08-19 18:25:24 -07:00
Safia Abdalla f88034902a
Don't render route component if OnNavigateAsync task in-progress (#24225) 2020-07-29 11:37:52 -07:00
Safia Abdalla 537ab96eb2
Merge branch 'master' into merge/release/5.0-preview8-to-master 2020-07-21 01:40:02 +00:00
Safia Abdalla 0a61165698
Tests, tweaks, and other follow-ups to lazy-loading (#23947)
* Render 'OnNavigateError' fragment on unhandled exception in OnNavigateAsync

* Address first round of feedback from peer review

* Refactor OnNavigateAsync handling and fix tests

* Make OnNavigateAsync cancellation cooperative with user tasks

* Fix aggressive re-rendering and cancellation handling

* Fix up tests based on peer review
2020-07-20 13:33:04 -07:00
Zachary Becknell 0889a62250
Fix #18539 - add Blazor catch-all route parameter (#24038)
* Fix #18539 - add Blazor catch-all route parameter

* Add E2E tests for catch-all parameter

* Adjust E2E test for catch-all params

* Remove ** scenarios for catch-all params

* Fix typo causing test failure
2020-07-17 17:44:24 -07:00
Safia Abdalla bbc116254a
Add framework support for lazy-loading assemblies on route change (#23290)
* Add framework support for lazy-loading assemblies on route change
* Configure lazy-loaded assemblies in WebAssemblyLazyLoadDefinition
* Move tests to WebAssembly-only scenarios
* Refactor RouteTableFactory and add WebAssemblyDynamicResourceLoader
* Address feedback from peer review
* Rename 'dynamicAssembly' to 'lazyAssembly' and address peer review
* Add sample with loading state
* Update Router API and assembly loading tests
* Support and test cancellation and pre-rendering
* Apply suggestions from code review
Co-authored-by: Steve Sanderson <SteveSandersonMS@users.noreply.github.com>
* Spurce up API and add tests for pre-rendering scenario
* Use CT instead of CTS in NavigationContext
* Address feedback from peer review
* Remove extra test file and update Router
Co-authored-by: Steve Sanderson <SteveSandersonMS@users.noreply.github.com>
2020-07-08 18:16:47 -07:00
Pranav K dcd32c0d14
Quarantine tests (#23598)
* Quarantine tests

* Quarantine shutdowntest
2020-07-02 16:22:56 +00:00
Safia Abdalla a57943a443
Add support for optional parameters in Blazor routes (#19733) 2020-03-30 12:30:28 -07:00
Steve Sanderson 0d30083aab E2E tests for navigation+preventDefault 2019-10-01 14:49:59 -07:00
Javier Calvarro Nelson df771dbf43
[Blazor] Cleans up infrastructure used for tests (#13515)
* Removes unnecessary test projects.
* Add a sample project to quickly test changes.
* Breaks off tests based on multiple startups.
* Unifies assertions across tests.
* Captures all logs on test failures.
2019-09-11 15:15:50 +02:00
Ryan Nowak 8035ef0a27 Add AdditionalAssemblies to Router
Adds the ability to specify multiple assemblies to the Router
component.

Prior to preview 8, the router would search all dependencies of
`AppAssembly` for routable components. We made an intentional change to
stop that. However, we haven't yet give users a way to specify multiple
assemblies if their components are split across assemblies.
2019-08-19 09:07:12 -07:00
Ryan Nowak 9b888e9df5
Blazor API Review: IUriHelper (#12425)
* Rename IUriHelper -> NavigationManager

- Remove IUriHelper interface
- Rename to NavigationManager
- Remove all traces of old naming

There's no functional or design change in this commit - just removing
all traces of the old name. The next few iterations will try to improve
the design.

* Minor API tweaks to NavigationManager

Making Initialize protected causes problems because right now the
server-side code needs to deal with one of two different
implementations, hence an exchange type is used. I followed the same
pattern that was used for auth for symmetry but I have some *cool*
thoughts.

- We can remove this when we remove stateful prerendering
- I have another idea to banish this pattern to the land of wind and
ghosts

If this ends up sticking around longer than a week in the code, lets
discuss other ideas and try to improve the pattern.

* Use hub method for server-side navigation

* Get rid of async local

* Add hub method test

* Misc bikeshedding

* Update src/Components/Server/src/Circuits/DefaultCircuitFactory.cs

Co-Authored-By: campersau <buchholz.bastian@googlemail.com>

* PR feedback
2019-08-01 17:11:09 -07:00
Steve Sanderson 54da777b7c
Reset scroll position after navigation. Fixes #10482 (#12423) 2019-07-24 10:25:59 -07:00
Steve Sanderson 2c3a44371a
Clear unused routing params. Fixes #7419 (#12407) 2019-07-21 20:00:03 -07:00
Steve Sanderson 22fbeac336
Clarify IUriHelper GetAbsoluteUrl behavior. Fixes #9717 (#12422)
* E2E test showing it already works when navigating inside the app

* E2E test showing expected behavior around both sides of prerendering
2019-07-21 17:22:26 -07:00
Pranav K 9f82b7be75
Cache the result of ComponentResolver (#11810)
* Add caching to ComponentFactory and ComponentResolver
2019-07-16 13:38:08 -07:00
Steve Sanderson 3697b4704b Workaround Chrome navigation issue (#10839)
Thanks @javiercn and @SteveSandersonMS!
2019-06-05 17:43:20 -07:00
Pranav K b9546df5d4
Defer link interception until Router is initialized (#10062)
* Defer link interception until Router is initialized

Fixes https://github.com/aspnet/AspNetCore/issues/9834
2019-05-17 15:33:35 -07:00
Javier Calvarro Nelson 9f1a978230
[Infrastructure improvements] (#8275)
* Improved selenium start and tear down
  * Selenium is set up and torn down in an assembly fixture.
  * Selenium is initialized lazily and in a non-blocking way.
  * Selenium processes are tracked as part of the build and their pids
    written to a file on disk for cleanup in the event of unexpected
    termination of the test process.
  * Browser fixture retries with linear backoff to create a remote
    driver. Under heavy load (like when we are doing a simultaneous NPM
    restore) the selenium server can become unresponsive so we retry
    three times, with a longer comand timeout allowance each time up to
    a max of 3 minutes.
* Moved test project setup to build time instead of runtime.
  * Added target PrepareForTest to create the required files for testing
    * The template creation folder.
    * The template props file to use our built packages.
    * The folder for the custom hive.
  * Added assembly metadata attributes to find all the data we need to
    run the tests.
    * Path to the artifacts shipping packages folder.
    * Path to the artifacts non-shipping packages folder.
    * Path to the test templates creation folder.
    * Path to use for the custom templating hive used in tests.
  * Proper cleanup as part of the build
    * Remove the test templates creation folder.
    * Remove the test packages restore path.
    * Recreate the test templates creation folder.
    * Recreate the test packages restore path.
  * Generated Directory.Build.Props and Directory.Build.Targets in the
    test templates creation folder.
  * Cleaned up potentially stale templatetestsprops.
* Improved test flows
  * Initialization is done lazily and asynchronously.
    * Selenium
    * Browser fixture
    * Template initialization.
  * Flattened test flows to avoid assertions inside deep callstacks.
    * All assertions happen at the test level with improved error messages.
      * With the exception of the migrations assertions.
    * Assertions contain information about which step failed, for what
      project and what failure details.
  * Broke down tests to perform individual steps instead of mixing build
    and publish.
    * Publish project.
    * Build project. (Debug)
    * Run built project.
    * Run published project.
  * Concentrated build logic into the Project class.
    * Context between the different steps of a test is maintained in
      this class.
    * All operations that require coordination are performed within this
      class.
      * There is a lock for dotnet and a lock for nodejs. When building
        SPAs we acquire the nodejs lock to correctly prevent multiple
        runs of nodejs in parallel.

[ApiAuthorization template cleanups]
  * Fix preview3 issues with breaking changes on Entity framework by
    manually configuring the model in ApiAuthorizationDbContext.
  * Add app.db to the project file when using local db.
  * Fix linting errors on angular template.
  * Fix react tests
  * Add tests to cover new auth options in the SPA templates.
2019-03-20 08:44:20 +01:00
Javier Calvarro Nelson d7a9606040
[Templating][Components] Unify and improve E2E testing infrastructure (#8188)
* Unify the Templating and Components testing infrastructure.
* Enable test project discovery in the components E2E tests.
* Enable selectively disabling Selenium tests through build properties.
2019-03-11 18:40:18 +01:00
Steve Sanderson a1d49e19b5 Revert feature that resets unspecified parameters to default(type). Fixes #6864 (#6931) 2019-01-22 16:16:07 -08:00
Nate McMaster 5a70f5312f
Convert Components projects to use ProjectRef (#6698)
This addresses #4246 for src/Components/. A few other changes were necessary because components had been using stale dependencies.
2019-01-16 12:28:04 -08:00