* Avoid spawning code-server with --reuse-window and --new-window
These flags mean the user explicitly wants to open in an existing
instance so if the socket is down it should error rather than try to
spawn code-server normally.
* Set session socket into environment variable
While I was at it I added a CLI flag to override the default. I also
swapped the default to --user-data-dir.
The value is set on an environment variable so it can be used by the
extension host similar to VSCODE_IPC_HOOK_CLI.
* Add e2e test for opening files externally
* docs: update maintaining
* chore(e2e): add maxFailures to playwright
* fix(ci): skip submodule in e2e job
We don't need the submodules for the e2e job. This will speed up the
checkout step.
* feat(ci): add test-e2e-proxy job
This adds a new job to CI to run our tests behind Caddy and simulate
code-server running against a reverse-proxy.
* refactor: make e2e work with reverse proxy
This refactors the e2e test in a couple ways:
- remove setting cookie in localStorage (instead we pass --auth none)
- refactor address() method to account for reverse proxy logic
* Update test/e2e/models/CodeServer.ts
* Update test/playwright.config.ts
* Update test/utils/constants.ts
Co-authored-by: Asher <ash@coder.com>
* Update test/utils/helpers.ts
Co-authored-by: Asher <ash@coder.com>
Co-authored-by: Asher <ash@coder.com>
* Include bin scripts for all platforms
These will get symlinked as part of the postinstall. These scripts
provide everything ours does inside the integrated terminal plus more.
* Improve OS detection
Specifically for Windows although we do not yet support Windows.
Also standardize the duplicate arch functions since they had drifted
from each other bit.
* Remove duplicate asar symlink
Since standalone releases run the postinstall they will get the asar
symlink there. That means the symlink will not exist for the npm
package and we will not need to ignore it.
The symlink portion is split out so it can be re-used for other
symlinks (for example linking bin scripts).
* Add symlinks to bin scripts
* Add test for opening a file from the terminal
* Add global Playwright timeout
Otherwise it will exceed the Actions timeout and get rudely killed
without any output.
* Make sed work on macOS
* Fix Node path in bin scripts
* Disable shellcheck expansion error
* Make scripts executable
* Remove .bak files created by sed
* Include Code build script in cache hash
Otherwise if we change the script it will not rebuild Code.
* Make sure the terminal opens
The selector was timing out even though it matched more than one element
but matching on the focused one appears to work.
In addition add a loop so it can keep trying to open the terminal
if something goes wrong with the focus.
* feat: github-auth flag
This will allow injecting credentials into code-server if you already
have them.
* Update Code
Contains the GitHub auth changes.
* Add e2e test for GitHub token
* Add test extension
This will let us test extension-related features (like the proxy URI).
I removed the environment variables in the script because they override
the ones you set yourself. We still set defaults in constants.ts.
* Add changelog entry for VSCODE_PROXY_URI
* Add terminal test for VSCODE_PROXY_URI
* Update VS Code
This adds the VSCODE_PROXY_URI environment variable.
* Implement last opened functionality
Fixes https://github.com/cdr/code-server/issues/4619
* Fix test temp dirs not being cleaned up
* Mock logger everywhere
This suppresses all the error and debug output we generate which makes
it hard to actually find which test has failed. It also gives us a
standard way to test logging for the few places we do that.
* Use separate data directories for unit test instances
Exactly as we do for the e2e tests.
* Add integration tests for vscode route
* Make settings use --user-data-dir
Without this test instances step on each other feet and they also
clobber your own non-test settings.
* Make redirects consistent
They will preserve the trailing slash if there is one.
* Remove compilation check
If you do a regular non-watch build there are no compilation stats so
this bricks VS Code in CI when running the unit tests.
I am not sure how best to fix this for the case where you have a build
that has not been packaged yet so I just removed it for now and added a
message to check if VS Code is compiling when in dev mode.
* Update code-server update endpoint name
My thinking is that this may reduce the cognitive overhead for
developers writing new test suites.
This also allows us to perform different setup steps (like ensuring the
editor is visible when authenticated).
This uses the current dev build by default but can be overidden with
CODE_SERVER_TEST_ENTRY (for example to test a release or some other
version).
Each instance has a separate state directory. This should make
parallelization work.
This also means you are no longer required to specify the password and
address yourself (or the extension directory once we add a test
extension). `yarn test:e2e` should just work as-is.
Lastly, it means the tests are no longer subject to yarn watch randomly
restarting.