Commit graph

14 commits

Author SHA1 Message Date
Tobias Koppers
eab61f3c65 add basic next pages support (vercel/turbo#223)
Server Rendering:

* This adds an additional ContentSource to next-dev which takes care of handling the `pages` directory.
* The content source creates a ServerRenderedAsset from each file in the `src/pages` or `pages` directory and a AssetGraphContentSource for that.
* The ServerRenderedAsset will reference an underlying asset for the node.js context which will be passed to the node executable for rendering. It uses a WrapperAsset to add additional communication logic.

Client Transition:

* When annotating `import`s with `transition: "next-client"` the NextClientTransition is used
* This transition changes the environment to browser
* It wraps the referenced asset with a next-hyrdation wrapper asset
* It leaves a little module in the previous context which exports a list of URLs for chunks needed.
* The NextClientTransition takes a client_chunking_context as argument which specifies how the client code is chunked.
2022-08-15 17:26:37 +00:00
Will Binns-Smith
935e46f995 next-dev test runner: ask os for free port (vercel/turbo#238)
These integration tests have been flaky, failing when a "free" port turns out to be in use. Since nextest parallelizes test runs and portpicker guesses and checks free ports [0], I'm guessing that there's a collision occurring. 

Instead, ask the operating system for a free port by binding to port 0 and read the port back from the resulting address.

Test Plan: Tried local runs with nextest, but those succeeded before as well. I'll probably retry things on CI a few times.

[0] 912f913ac3/src/lib.rs (L53)
2022-08-12 21:21:21 +00:00
Will Binns-Smith
51c69f20f8 next-dev test runner: Implement manual debug mode (vercel/turbo#211)
This implements a manual debug mode for next-dev tests, enabled by
setting the environment variable TURBOPACK_DEBUG_BROWSER to any value.

It launches the test browser in non-headless mode and holds it open
~~indefinitely~~ until the user closes it, so it can be inspected.

Test Plan: `TURBOPACK_DEBUG_BROWSER=1 cargo test -p next-dev --
test_crates_next_dev_tests_integration_chunks_circular_correctness
--nocapture` and verify the browser is opened non-headless and is held
open
2022-08-10 10:14:01 +00:00
Will Binns-Smith
7bd5321b09 next-dev test runner (vercel/turbo#172)
This is a very early version of the next-dev test runner. I'm opening this early to get thoughts from folks re: the direction of the design and implementation.

Fixes vercel/turbo#204 

Currently it:
* Discovers integration test fixtures from the filesystem. Right now these are expected to be single files that get bundled and will eventually include assertions. This is powered by the test-generator crate, which allows us not to have to manually enumerate each case. We could consider using this for the node-file-trace tests as well.
* Starts the dev server on a free port and opens a headless browser to its root. The browser control is implemented with the https://crates.io/crates/chromiumoxide crate, which expects Chrome or Chromium to already be available.

Eventually it will:
* [x] Implement a minimal test environment loaded in the browser so that assertions can be run there from bundled code.
* [x] Report back the results of these assertions to rust, where we can pass/fail cargo tests with those results.

In the future it could:
* Possibly include snapshot-style tests to assert on transformed results. This could be in the form of fixture directories instead of files cc @jridgewell
* Support expressing special configuration of turbopack in a fixture, possibly as another file in the fixture directory.
* [x] ~Possibly support distributing tests to a pool of open browsers instead of opening and closing for each test.~

Test Plan: See next PRs
2022-08-09 16:20:30 +00:00
Tobias Koppers
659a5fd83d add issue reporting to next dev (vercel/turbo#208) 2022-08-08 07:39:52 +00:00
Leah
1d4821382b fix css layer import (vercel/turbo#195)
kdy1 fixes this upstream
2022-08-03 03:37:56 +00:00
Will Binns-Smith
01a7e41834 Extract server creation into own function and module (vercel/turbo#191)
* Extract server creation into fn

* Use builder pattern and anyhow context
2022-08-02 16:28:11 -07:00
Tobias Koppers
41c2dfd2de introduce ContentSource as source for the dev server (vercel/turbo#185)
and potentially a next build in future
2022-08-01 07:02:53 +00:00
Will Binns-Smith
45b409393d Move browser opening to next-dev cli (vercel/turbo#169)
Cherry-picking this from my work on the next-dev test runner.

This moves browser opening from the turbopack-dev-server crate into the next-dev crate, which has the cli entrypoint that runs the dev server. It looks like the dev server package is meant to be used as a library (it's only a library crate), and having this external side effect feels unexpected and makes it difficult to use this crate in situations like a test runner for next-dev, where we should test with a headless web browser.

Alternatively, opening the browser could be an option passed when creating the dev server, but this feels a bit cleaner to me.

Test Plan: `cargo run -p next-dev` and verify the browser still opens and successfully connects to the dev server.
2022-07-27 19:09:11 +00:00
LongYinan
a55a831b39 Node Module Trace webpack plugin (vercel/turbo#140)
* Initialize Node.js/TypeScript workspace

* node-module-trace Webpack plugin

* Add new fmt checks to pipeline

* Popup unwind error

* Implement --exact flag

* Yarn 3.2.2

* Reformat toml files

* Fix socket io test, 100ms timeout is too long

* remove unnecessary CI cache config

* regenerate lockfile from old lockfile, align the dependencies version

* Run nmt tests in system tmp dir

* Apply code review suggestions

* allow to wait for task completion and propagate errors and panics

* revert method addition

* spawn_root_task should be sync

Co-authored-by: Tobias Koppers <tobias.koppers@googlemail.com>
2022-07-22 12:36:08 +02:00
Tobias Koppers
878dd09578 improve visualization
make TransientValue functional
make console-subscriber an optional feature
avoid cloning when calling a function
capture timings of task executions
fix LazyAsset
expose graph from dev server
2022-07-08 14:52:28 +02:00
Leah
667507c5ca don't like these quoted names lol 2022-06-29 18:09:41 +02:00
Tobias Koppers
db41ef8432 place the persistent cache behind a feature flag 2022-06-29 09:40:11 +02:00
Tobias Koppers
e7c2d1e932 add initial dev-server and next-dev cli 2022-06-14 12:53:46 +02:00