Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve support for file changes detection when running UI mode in Docker #217

Merged
merged 9 commits into from
Feb 8, 2024

Conversation

edumserrano
Copy link
Owner

@edumserrano edumserrano commented Feb 8, 2024

Problem

In some cases, when running on Docker, file change detection will not be available which means the target test app doesn't get rebuild when you change the code. This is problematic when running the UI mode via Docker.

The root cause comes down to:

In cases where Angular CLI is running in a shared directory on linux VM on a windows host the webpack dev server isn't detecting file changes from the host environment. (ex: Whenever a docker dev environment is running on a windows host.)
This is solved by adding poll option to the webpack dev server configuration. By default when no poll interval is set watchpack will use native file system change detection. This change allows for setting the poll interval which will turn on polling. 1

Possible solutions

  1. The simplest solution is to add the --poll option to the ng serve command executed by the playwright.config.ts. That's what is implemented by this PR.
  2. Alternatively, when running Docker Desktop for Windows, switch to WSL1 instead of using WSL2.2
  3. Lastly, you could run the target test app outside of Docker and then use the existing -useHostWebServer option:
    npm run test:ui '--' -useHostWebServer
    
    Since the app is running outside of Docker the file change detection will work as usual and the -useHostWebServer will make the tests running on Docker execute against the instance of the app running on the host

Changes

  • added logic to automatically decide if the ng serve command requires the --poll flag.
  • allow enforcing or not the --poll flag for the ng serve command .
  • update documentation to reflect the new options as well as to describe the root cause behind the file changes not being detected in some scenarios.

Footnotes

  1. feat(webpackDevServer): Add watchOptions for webpackDevServer #1814

  2. Nodemon and webpack-dev-server hot reload not working under WSL 2 after Windows 10 resinstall

@edumserrano edumserrano merged commit b8c254d into main Feb 8, 2024
11 of 12 checks passed
@edumserrano edumserrano deleted the docker-demo branch February 8, 2024 03:21
edumserrano added a commit that referenced this pull request Mar 10, 2024
…cker (#217)

* regenerate package-lock.json

* improve UI mode detection so that it also works when running outside of docker

* wip detect wsl version for docker-desktop

* wip detect wsl version for docker-desktop 2

* start docs for file change detection on docker

* remove console log from playwright config because they trigger more than just at startup

* Update docker README

* Update docker README 2

* Update references to README section
edumserrano added a commit that referenced this pull request Mar 10, 2024
…cker (#217)

* regenerate package-lock.json

* improve UI mode detection so that it also works when running outside of docker

* wip detect wsl version for docker-desktop

* wip detect wsl version for docker-desktop 2

* start docs for file change detection on docker

* remove console log from playwright config because they trigger more than just at startup

* Update docker README

* Update docker README 2

* Update references to README section
edumserrano added a commit that referenced this pull request Mar 10, 2024
…cker (#217)

* regenerate package-lock.json

* improve UI mode detection so that it also works when running outside of docker

* wip detect wsl version for docker-desktop

* wip detect wsl version for docker-desktop 2

* start docs for file change detection on docker

* remove console log from playwright config because they trigger more than just at startup

* Update docker README

* Update docker README 2

* Update references to README section
edumserrano added a commit that referenced this pull request Mar 10, 2024
…cker (#217)

* regenerate package-lock.json

* improve UI mode detection so that it also works when running outside of docker

* wip detect wsl version for docker-desktop

* wip detect wsl version for docker-desktop 2

* start docs for file change detection on docker

* remove console log from playwright config because they trigger more than just at startup

* Update docker README

* Update docker README 2

* Update references to README section
edumserrano added a commit that referenced this pull request Mar 10, 2024
…cker (#217)

* regenerate package-lock.json

* improve UI mode detection so that it also works when running outside of docker

* wip detect wsl version for docker-desktop

* wip detect wsl version for docker-desktop 2

* start docs for file change detection on docker

* remove console log from playwright config because they trigger more than just at startup

* Update docker README

* Update docker README 2

* Update references to README section
edumserrano added a commit that referenced this pull request Mar 10, 2024
…cker (#217)

* regenerate package-lock.json

* improve UI mode detection so that it also works when running outside of docker

* wip detect wsl version for docker-desktop

* wip detect wsl version for docker-desktop 2

* start docs for file change detection on docker

* remove console log from playwright config because they trigger more than just at startup

* Update docker README

* Update docker README 2

* Update references to README section
edumserrano added a commit that referenced this pull request Mar 10, 2024
…cker (#217)

* regenerate package-lock.json

* improve UI mode detection so that it also works when running outside of docker

* wip detect wsl version for docker-desktop

* wip detect wsl version for docker-desktop 2

* start docs for file change detection on docker

* remove console log from playwright config because they trigger more than just at startup

* Update docker README

* Update docker README 2

* Update references to README section
edumserrano added a commit that referenced this pull request Mar 10, 2024
…cker (#217)

* regenerate package-lock.json

* improve UI mode detection so that it also works when running outside of docker

* wip detect wsl version for docker-desktop

* wip detect wsl version for docker-desktop 2

* start docs for file change detection on docker

* remove console log from playwright config because they trigger more than just at startup

* Update docker README

* Update docker README 2

* Update references to README section
edumserrano added a commit that referenced this pull request Mar 10, 2024
…cker (#217)

* regenerate package-lock.json

* improve UI mode detection so that it also works when running outside of docker

* wip detect wsl version for docker-desktop

* wip detect wsl version for docker-desktop 2

* start docs for file change detection on docker

* remove console log from playwright config because they trigger more than just at startup

* Update docker README

* Update docker README 2

* Update references to README section
edumserrano added a commit that referenced this pull request Mar 10, 2024
…cker (#217)

* regenerate package-lock.json

* improve UI mode detection so that it also works when running outside of docker

* wip detect wsl version for docker-desktop

* wip detect wsl version for docker-desktop 2

* start docs for file change detection on docker

* remove console log from playwright config because they trigger more than just at startup

* Update docker README

* Update docker README 2

* Update references to README section
edumserrano added a commit that referenced this pull request Mar 10, 2024
…cker (#217)

* regenerate package-lock.json

* improve UI mode detection so that it also works when running outside of docker

* wip detect wsl version for docker-desktop

* wip detect wsl version for docker-desktop 2

* start docs for file change detection on docker

* remove console log from playwright config because they trigger more than just at startup

* Update docker README

* Update docker README 2

* Update references to README section
edumserrano added a commit that referenced this pull request Mar 10, 2024
…cker (#217)

* regenerate package-lock.json

* improve UI mode detection so that it also works when running outside of docker

* wip detect wsl version for docker-desktop

* wip detect wsl version for docker-desktop 2

* start docs for file change detection on docker

* remove console log from playwright config because they trigger more than just at startup

* Update docker README

* Update docker README 2

* Update references to README section
edumserrano added a commit that referenced this pull request Mar 10, 2024
…cker (#217)

* regenerate package-lock.json

* improve UI mode detection so that it also works when running outside of docker

* wip detect wsl version for docker-desktop

* wip detect wsl version for docker-desktop 2

* start docs for file change detection on docker

* remove console log from playwright config because they trigger more than just at startup

* Update docker README

* Update docker README 2

* Update references to README section
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant