From 3823591bb8fcb7f6029169a65b60f02e96ef3a0b Mon Sep 17 00:00:00 2001 From: Carlos Feria <2582866+carlosthe19916@users.noreply.github.com> Date: Sat, 8 Nov 2025 10:45:59 -0500 Subject: [PATCH 1/3] feat: add devcontainers for node and playwright Signed-off-by: Carlos Feria <2582866+carlosthe19916@users.noreply.github.com> --- .devcontainer/Dockerfile | 10 ----- .devcontainer/README.md | 23 ++++------- .devcontainer/generate_devcontainer.sh | 4 -- .devcontainer/node/Dockerfile | 1 + .devcontainer/node/devcontainer.json | 15 +++++++ .devcontainer/node/docker-compose.yml | 20 ++++++++++ .devcontainer/playwright/Dockerfile | 1 + .devcontainer/playwright/devcontainer.json | 30 ++++++++++++++ .devcontainer/playwright/docker-compose.yml | 11 ++++++ .devcontainer/template.json | 44 --------------------- 10 files changed, 86 insertions(+), 73 deletions(-) delete mode 100644 .devcontainer/Dockerfile delete mode 100755 .devcontainer/generate_devcontainer.sh create mode 100644 .devcontainer/node/Dockerfile create mode 100644 .devcontainer/node/devcontainer.json create mode 100644 .devcontainer/node/docker-compose.yml create mode 100644 .devcontainer/playwright/Dockerfile create mode 100644 .devcontainer/playwright/devcontainer.json create mode 100644 .devcontainer/playwright/docker-compose.yml delete mode 100644 .devcontainer/template.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile deleted file mode 100644 index 83c8b9419..000000000 --- a/.devcontainer/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -# Image tag should match package.json > @playwright/test -FROM mcr.microsoft.com/playwright:v1.55.0-jammy - -RUN apt update && \ - apt install sudo && \ - usermod -aG sudo pwuser && \ - echo "%sudo ALL=(ALL) NOPASSWD:ALL" | tee -a /etc/sudoers > /dev/null - -RUN chown pwuser:pwuser -R /home/pwuser -USER pwuser \ No newline at end of file diff --git a/.devcontainer/README.md b/.devcontainer/README.md index d8ff99ed7..c09d5b100 100644 --- a/.devcontainer/README.md +++ b/.devcontainer/README.md @@ -2,21 +2,6 @@ Use [Devcontainers](https://code.visualstudio.com/docs/devcontainers/containers) to prepare a fully automated working environment. -Generate the `devcontainer.json` executing: - -```shell -cd .devcontainer -./generate_devcontainer.sh -``` - -Now you should see the file `.devcontainer/devcontainer.json`. At this point you can use your favorite IDE to run Devcontainers - -## VSCode - -Install the extension https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers - -To open the repository with DevContainers do `Ctrl + Shift + P` and enter `Dev Containers: Rebuild and Reopen in Container`. For more options see the Extension documentations. - ### Docker Docker defaults should work fine therefore there is nothing to do. @@ -35,8 +20,16 @@ Restart your OS if necessary and verify that podman listens: systemctl --user status podman.socket ``` +## VSCode + +Install the extension https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers + +Only if you use podman, therefore Optional: + Go to the Extension Settings: - `Dev › Containers: Docker Compose Path` set `podman-compose` - `Dev › Containers: Docker Path` set `podman` - `Dev › Containers: Docker Socket Path` set `/run/podman/podman.sock` + +To open the repository with DevContainers do `Ctrl + Shift + P` and enter `Dev Containers: Rebuild and Reopen in Container` or `Dev Containers: Reopen in Container`. For more options see the Extension documentation. diff --git a/.devcontainer/generate_devcontainer.sh b/.devcontainer/generate_devcontainer.sh deleted file mode 100755 index fa4357514..000000000 --- a/.devcontainer/generate_devcontainer.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -HOSTNAME=$(hostname) -envsubst '${HOSTNAME}' < template.json > devcontainer.json \ No newline at end of file diff --git a/.devcontainer/node/Dockerfile b/.devcontainer/node/Dockerfile new file mode 100644 index 000000000..88cae803d --- /dev/null +++ b/.devcontainer/node/Dockerfile @@ -0,0 +1 @@ +FROM mcr.microsoft.com/devcontainers/base:ubuntu diff --git a/.devcontainer/node/devcontainer.json b/.devcontainer/node/devcontainer.json new file mode 100644 index 000000000..2b679a4af --- /dev/null +++ b/.devcontainer/node/devcontainer.json @@ -0,0 +1,15 @@ +{ + "name": "trustify-ui", + "dockerComposeFile": "./docker-compose.yml", + "service": "trustify-ui", + "workspaceFolder": "/workspace", + "forwardPorts": [ + 3000 + ], + "features": { + "ghcr.io/devcontainers/features/common-utils:2": {}, + "ghcr.io/devcontainers/features/node:1": { + "version": "22" + } + } +} \ No newline at end of file diff --git a/.devcontainer/node/docker-compose.yml b/.devcontainer/node/docker-compose.yml new file mode 100644 index 000000000..8560bd9d2 --- /dev/null +++ b/.devcontainer/node/docker-compose.yml @@ -0,0 +1,20 @@ +networks: + trustify: + name: "trustify" + +services: + trustify-ui: + image: localhost/devcontainer-trustify-ui:latest + build: + dockerfile: ./Dockerfile + security_opt: + - "label=disable" + userns_mode: "keep-id" + environment: + TRUSTIFY_API_URL: http://trustify:8080 + OIDC_SERVER_URL: http://localhost:9090/realms/trustify + command: tail -f /dev/null + volumes: + - ../..:/workspace:cached + networks: + - trustify diff --git a/.devcontainer/playwright/Dockerfile b/.devcontainer/playwright/Dockerfile new file mode 100644 index 000000000..827b76ca4 --- /dev/null +++ b/.devcontainer/playwright/Dockerfile @@ -0,0 +1 @@ +FROM mcr.microsoft.com/playwright:v1.55.0-jammy diff --git a/.devcontainer/playwright/devcontainer.json b/.devcontainer/playwright/devcontainer.json new file mode 100644 index 000000000..943f5f063 --- /dev/null +++ b/.devcontainer/playwright/devcontainer.json @@ -0,0 +1,30 @@ +{ + "name": "trustify-e2e", + "dockerComposeFile": "./docker-compose.yml", + "service": "playwright", + "workspaceFolder": "/workspace/e2e", + "remoteUser": "pwuser", + "forwardPorts": [ + 6080, + 5901 + ], + "features": { + "ghcr.io/devcontainers/features/common-utils:2": { + "username": "pwuser" + }, + "ghcr.io/devcontainers/features/node:1": { + "version": "22" + }, + "ghcr.io/devcontainers/features/desktop-lite:1": { + "VNC_RESOLUTION": "1920x1200x16" + } + }, + "portsAttributes": { + "6080": { + "label": "browser vnc" + }, + "5901": { + "label": "real vnc" + } + } +} \ No newline at end of file diff --git a/.devcontainer/playwright/docker-compose.yml b/.devcontainer/playwright/docker-compose.yml new file mode 100644 index 000000000..27923b27b --- /dev/null +++ b/.devcontainer/playwright/docker-compose.yml @@ -0,0 +1,11 @@ +services: + playwright: + image: localhost/devcontainer-trustify-e2e:latest + build: + dockerfile: ./Dockerfile + security_opt: + - "label=disable" + userns_mode: "keep-id" + network_mode: host + volumes: + - ../..:/workspace:cached diff --git a/.devcontainer/template.json b/.devcontainer/template.json deleted file mode 100644 index c699bd2bb..000000000 --- a/.devcontainer/template.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "playwright", - "build": { - "dockerfile": "Dockerfile" - }, - "workspaceFolder": "/workspaces/trustify-ui/e2e", - "runArgs": [ - "--privileged", - "--userns=keep-id", - "--network=host", - "--add-host=${HOSTNAME}:127.0.0.1", - "-e DISPLAY=:2" - ], - "remoteUser": "pwuser", - "features": { - "ghcr.io/devcontainers/features/desktop-lite:1": { - "VNC_RESOLUTION": "1920x1200x16" - } - }, - "forwardPorts": [6080, 5901], - "portsAttributes": { - "6080": { - "label": "browser vnc" - }, - "5901": { - "label": "real vnc" - } - }, - "customizations": { - "vscode": { - "extensions": [ - "ms-playwright.playwright", - "alexkrechik.cucumberautocomplete" - ], - "settings": { - "cucumberautocomplete.steps": [ - "tests/ui/features/@*/*.step.ts", - "tests/ui/steps/*.ts" - ], - "cucumberautocomplete.strictGherkinCompletion": true - } - } - } -} From c2d1fd88f1d745cd2d2d1d18a66304f586eb1d72 Mon Sep 17 00:00:00 2001 From: Carlos Feria <2582866+carlosthe19916@users.noreply.github.com> Date: Sat, 8 Nov 2025 11:25:47 -0500 Subject: [PATCH 2/3] fix: align devcontainer cmd to official docs Signed-off-by: Carlos Feria <2582866+carlosthe19916@users.noreply.github.com> --- .devcontainer/node/docker-compose.yml | 2 +- .devcontainer/playwright/docker-compose.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.devcontainer/node/docker-compose.yml b/.devcontainer/node/docker-compose.yml index 8560bd9d2..e6036f3b1 100644 --- a/.devcontainer/node/docker-compose.yml +++ b/.devcontainer/node/docker-compose.yml @@ -13,7 +13,7 @@ services: environment: TRUSTIFY_API_URL: http://trustify:8080 OIDC_SERVER_URL: http://localhost:9090/realms/trustify - command: tail -f /dev/null + command: /bin/sh -c "while sleep 1000; do :; done" volumes: - ../..:/workspace:cached networks: diff --git a/.devcontainer/playwright/docker-compose.yml b/.devcontainer/playwright/docker-compose.yml index 27923b27b..2bd947f42 100644 --- a/.devcontainer/playwright/docker-compose.yml +++ b/.devcontainer/playwright/docker-compose.yml @@ -7,5 +7,6 @@ services: - "label=disable" userns_mode: "keep-id" network_mode: host + command: /bin/sh -c "while sleep 1000; do :; done" volumes: - ../..:/workspace:cached From d5cdf4ada37a01587c4187b05f19db7647cbaea2 Mon Sep 17 00:00:00 2001 From: Carlos Feria <2582866+carlosthe19916@users.noreply.github.com> Date: Sat, 8 Nov 2025 12:05:47 -0500 Subject: [PATCH 3/3] fix: add vscode customizations Signed-off-by: Carlos Feria <2582866+carlosthe19916@users.noreply.github.com> --- .devcontainer/node/devcontainer.json | 30 ++++++++++++++++++++++ .devcontainer/playwright/devcontainer.json | 16 ++++++++++++ 2 files changed, 46 insertions(+) diff --git a/.devcontainer/node/devcontainer.json b/.devcontainer/node/devcontainer.json index 2b679a4af..d957b989c 100644 --- a/.devcontainer/node/devcontainer.json +++ b/.devcontainer/node/devcontainer.json @@ -11,5 +11,35 @@ "ghcr.io/devcontainers/features/node:1": { "version": "22" } + }, + "customizations": { + "vscode": { + "extensions": [ + "dsznajder.es7-react-js-snippets", + "biomejs.biome", + "ms-playwright.playwright", + "alexkrechik.cucumberautocomplete" + ], + "settings": { + "git.alwaysSignOff": true, + "biome.searchInPath": false, + "biome.lsp.bin": "node_modules/@biomejs/cli-linux-x64/biome", + "editor.defaultFormatter": "biomejs.biome", + "[javascript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "cucumberautocomplete.steps": [ + "e2e/tests/ui/features/@*/*.step.ts", + "e2e/tests/ui/steps/*.ts" + ], + "cucumberautocomplete.strictGherkinCompletion": true + } + } } } \ No newline at end of file diff --git a/.devcontainer/playwright/devcontainer.json b/.devcontainer/playwright/devcontainer.json index 943f5f063..253eae077 100644 --- a/.devcontainer/playwright/devcontainer.json +++ b/.devcontainer/playwright/devcontainer.json @@ -26,5 +26,21 @@ "5901": { "label": "real vnc" } + }, + "customizations": { + "vscode": { + "extensions": [ + "ms-playwright.playwright", + "alexkrechik.cucumberautocomplete" + ], + "settings": { + "git.alwaysSignOff": true, + "cucumberautocomplete.steps": [ + "tests/ui/features/@*/*.step.ts", + "tests/ui/steps/*.ts" + ], + "cucumberautocomplete.strictGherkinCompletion": true + } + } } } \ No newline at end of file