Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
c393e7f
add sourceScript input field to task component's property sub-screen
so5 Feb 13, 2026
854d563
[skip ci] update version number
actions-user Feb 13, 2026
bfcef17
fix jsonSchema
so5 Feb 13, 2026
3cf6e75
Fix checker and source behavior
so5 Feb 18, 2026
79588f7
remove job specific field when use job scheduler is false
so5 Feb 24, 2026
72f4555
update AGENTS.md
so5 Feb 25, 2026
3b456ab
Add a fixed hostname to make UT more robust.
so5 Feb 26, 2026
8fbcebb
update AGENTS.md
so5 Feb 26, 2026
61c1006
replace PBS setting because xml output option is deprecated
so5 Mar 2, 2026
a936bc6
[WIP] support local and remote shared storage (not well tested)
so5 Mar 2, 2026
e78afa2
for, foreach, and while component support skip copy functionality
so5 Mar 2, 2026
7902fd1
implement direct file transfer between remotehosts by rsync
so5 Mar 2, 2026
b3ca847
update compose.yml for UT
so5 Mar 2, 2026
e3a81be
stop ignore log* files
so5 Mar 4, 2026
4482c8c
fix bug in test code
so5 Mar 4, 2026
7e2c21a
add clean up process to Dispater UT
so5 Mar 5, 2026
3014421
remove some prompt from AGENTS.md and move to skills
so5 Mar 6, 2026
3cba06e
never re-run if task component is already stage-out phase. only file …
so5 Mar 7, 2026
cfd0064
keep files on remotehost if it will be used inputFile of another comp…
so5 Mar 7, 2026
2ce27f3
support mandatry option of each inputFiles
so5 Mar 7, 2026
a497b9e
revamp validation check
so5 Mar 7, 2026
a9fc6ba
add validater for source script on remotehost
so5 Mar 7, 2026
228d22f
add validation check for inputFile overwriting
so5 Mar 8, 2026
7528b13
add UI for root workflow's clean up setting
so5 Mar 8, 2026
710d400
support force copy option
so5 Mar 8, 2026
7162251
add description about mandatory flag of inputFile
so5 Mar 8, 2026
95c0c96
write JSON data with spaces
so5 Mar 8, 2026
1dec4d4
refactor UT setup function
so5 Mar 9, 2026
1aded6f
gather target files will be automatically downloaded from remotehost …
so5 Mar 9, 2026
591e58d
add validation check for gather/scatter target component existance
so5 Mar 9, 2026
90ff423
queue in remotehost setting is now array of string. Older setting is …
so5 Mar 9, 2026
56398c7
add confirmation dialog when uploading to storage component cause ove…
so5 Mar 9, 2026
818662e
change connector color
so5 Mar 9, 2026
6f9f8bc
add tooltip to connector
so5 Mar 9, 2026
12a22d7
move some input field of task component to advanced panel
so5 Mar 9, 2026
970a1f7
add header column to inputFiles and outputFiles
so5 Mar 9, 2026
423cae9
validation error dialog is non-modal from now on
so5 Mar 9, 2026
50b9d9e
remove all remote files which is kept for symlink target when project…
so5 Mar 9, 2026
c1cb544
add xml attribute when files are transferd to hpciss/hpciss-tar compo…
so5 Mar 9, 2026
aac91fc
add attribute viewer and E2E test
so5 Mar 10, 2026
e3d6432
test: add mock server (#102)
k-ota-sec Mar 18, 2026
5fd0c15
test: fix some test failed (#103)
k-ota-sec Mar 23, 2026
9299f1d
implement direct file transfer between remotehosts by rsync
so5 Mar 2, 2026
7bde65a
format config file
so5 Mar 23, 2026
9a0dbf9
add and organize test scripts
so5 Mar 24, 2026
6d9da93
fix test environment only related github workflow
so5 Mar 25, 2026
a30503d
use mock for CI
so5 Mar 25, 2026
ef8d915
- fix UT again
so5 Mar 25, 2026
c7b89d0
Use docker mock and gateway server to reduce memory usage
so5 Mar 25, 2026
391d77e
fix E2E test
so5 Mar 27, 2026
a8933d5
remove dupulicated source script field
so5 Mar 28, 2026
94ca32a
fix E2E test again
so5 Mar 28, 2026
379b5da
- fix dialog close but
so5 Mar 29, 2026
ad920a6
fix edge case
so5 Mar 29, 2026
ced84b6
fix E2E test
so5 Mar 29, 2026
93bbb76
add missing files which is used in setComponentStateFinished
so5 Mar 29, 2026
07aba0a
re-enable auth test
so5 Mar 29, 2026
7cc5e80
fix: implement clean component E2E tests with proper state setup
so5 Apr 5, 2026
b691bd3
pointer-events:none to the last breadcrumb item via v-breadcrumbs-item
so5 Apr 5, 2026
04a1f6b
remove unnesessary assertion
so5 Apr 5, 2026
716ef01
remove only modifier from fixed test
so5 Apr 5, 2026
c397cca
stop closing and re-opening dialog
so5 Apr 5, 2026
c167ced
fix clean component test
so5 Apr 5, 2026
c780c20
fix race condition in component property
so5 Apr 6, 2026
35cb952
Fix memory leak error
so5 Apr 6, 2026
7100f0e
introduce serialization queue dedicated for each project
so5 Apr 6, 2026
7dc0869
use more reliable way
so5 Apr 7, 2026
b80d467
tweak render timing
so5 Apr 9, 2026
279d9f4
Rewrite remotehost test because it is now dialog not independent page.
so5 Apr 9, 2026
2aa3b70
remove unintentionaly added entry
so5 Apr 9, 2026
7f23f99
fix memory leak
so5 Apr 9, 2026
b39d1d8
Reduce home screen visits to prevent Chrome renderer crashes
so5 Apr 10, 2026
18fbedf
fix minor resource leak
so5 Apr 10, 2026
df3eb31
arrange test scripts
so5 Apr 10, 2026
2bf4766
Revert timeout value
so5 Apr 11, 2026
73a169d
introduce E2E test skill
so5 Apr 11, 2026
78c20ec
Skip hpciss and hpciss remote file browser test
so5 Apr 13, 2026
e9510a9
modify E2E test skill
so5 Apr 16, 2026
90bf5c7
fix: use component state for context menu and fix fileBrowser race c…
so5 Apr 16, 2026
39bd504
add data-cy attribute
so5 Apr 17, 2026
dbe120a
fix: use live component state for context menu clean/delete decision
so5 Apr 17, 2026
8e09252
add tweak for getFiles race condition
so5 Apr 17, 2026
3596504
fix file open race condition
so5 Apr 17, 2026
dbb0bb2
- Introduce drawerVisible variable which represent componentProperty …
so5 Apr 18, 2026
6c71f84
hide componentProperty drawer after component unselected
so5 Apr 19, 2026
e272604
tmp commit: baseline
so5 Apr 19, 2026
a3ee34d
fix remotehost test
so5 Apr 20, 2026
ab7adbf
introduce SBS to project edit queue to cancel queued edit operation
so5 Apr 20, 2026
ec944bc
Add sentinel to ensure all edit workflow task is done before stopping…
so5 Apr 20, 2026
089b6a5
- remove harmful try-catch block which introduced dbb0bb24 commit
so5 Apr 20, 2026
4a3b7f4
drop some props from updateComponent because they must be changed by …
so5 Apr 21, 2026
d7cc9ad
reset mock server state to reduce project list
so5 Apr 21, 2026
764a38d
add { transition: false } to prevent chrome renderer crash
so5 Apr 21, 2026
770263f
- check snackbar if file is saved or not
so5 Apr 21, 2026
02f8fdd
add test:e2e:mock:run script for GitHub Actions workflow
so5 Apr 21, 2026
52471e8
fix CI: add wheel_auth container and socket.io-client dependency
so5 Apr 21, 2026
6b38157
add wheel_config_auth to repository for CI
so5 Apr 21, 2026
6aac0bb
fix: prevent Chrome renderer crash in CI and fix goHome cross-server …
so5 Apr 22, 2026
c47ea93
fix: increase /dev/shm size in CI to prevent Chrome renderer crash
so5 Apr 22, 2026
50afb8a
Merge remote-tracking branch 'origin/dev2025' into feature/server-enh…
so5 Apr 22, 2026
4f58f9b
test: fix timing-dependent failures in storage and task specs
so5 Apr 23, 2026
b984667
update test document
so5 Apr 24, 2026
b549c0a
ignore version.json
so5 Apr 24, 2026
1d8bfc5
improve ps E2E test stability
so5 Apr 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/skills
81 changes: 51 additions & 30 deletions .github/workflows/run_cypress.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,48 +31,68 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: "20"
- name: Build and start WHEEL container
- name: Build Docker images
run: |
docker build --target exec -t wheel_e2e_test .
docker run -d --name test-wheel_release_test-1 \
docker build -f test/Dockerfile.gateway -t wheel_e2e_gateway test/
docker build -f test/Dockerfile.mock -t wheel_e2e_mock test/
- name: Create network and start containers
run: |
docker network create wheel-e2e-net
docker run -d --name wheel --network wheel-e2e-net \
-p 8089:8089 \
-e WHEEL_USE_HTTP=1 \
-e WHEEL_LOGLEVEL=ERROR \
wheel_e2e_test
# Copy config files into the container
docker cp test/wheel_config/. test-wheel_release_test-1:/root/.wheel/
# Wait for server to be ready
timeout 300 bash -c 'until curl -f http://localhost:8089 > /dev/null 2>&1; do sleep 2; done'
docker cp test/wheel_config/. wheel:/root/.wheel/
docker run -d --name wheel_auth --network wheel-e2e-net \
-p 8090:8089 \
-e WHEEL_USE_HTTP=1 \
-e WHEEL_ANONYMOUS_LOGIN=YES \
-e WHEEL_ANONYMOUS_PASSWORD=WheelTest123! \
-e WHEEL_LOGLEVEL=ERROR \
wheel_e2e_test
docker cp test/wheel_config_auth/. wheel_auth:/root/.wheel/
docker run -d --name mock --network wheel-e2e-net \
-p 3101:3101 \
-p 3102:3102 \
wheel_e2e_mock
docker run -d --name gateway --network wheel-e2e-net \
-p 3001:3001 \
-e REAL_APP=http://wheel:8089 \
-e MOCK_SIO=http://mock:3101 \
-e MOCK_HTTP=http://mock:3102 \
wheel_e2e_gateway
- name: Install test dependencies
working-directory: test
run: npm install --ignore-scripts
- name: Install Cypress binary
working-directory: test
run: npx cypress install
- name: Cypress run
uses: cypress-io/github-action@v6
env:
GW_PORT: "3001"
REAL_APP: "http://127.0.0.1:8089"
MOCK_SIO: "http://127.0.0.1:3101"
MOCK_HTTP: "http://127.0.0.1:3102"
with:
working-directory: test
browser: ${{ matrix.browser }}
install: false
start: |
node ./ws-gateway.cjs > gateway.log 2>&1 & echo $! > gateway.pid
npx @mocks-server/main > httpmock.log 2>&1 &
wait-on: 'npx wait-on --timeout 120000 tcp:127.0.0.1:3001 tcp:127.0.0.1:3102'
config: requestTimeout=300000,defaultCommandTimeout=300000,retries=2
- name: upload gateway/mocks logs
- name: Wait for containers to be ready
working-directory: test
run: |
timeout 300 bash -c 'until curl -sf http://localhost:8089 > /dev/null 2>&1; do sleep 2; done'
timeout 300 bash -c 'until curl -sf http://localhost:8090 > /dev/null 2>&1; do sleep 2; done'
npx wait-on tcp:127.0.0.1:3001 tcp:127.0.0.1:3101 tcp:127.0.0.1:3102 --timeout 60000
- name: Increase /dev/shm size for Chrome
run: sudo mount -t tmpfs -o size=512m tmpfs /dev/shm
- name: Run E2E tests with mock server
working-directory: test
run: npm run test:e2e:mock:run
- name: Collect container logs on failure
if: failure()
run: |
docker logs gateway > /tmp/gateway.log 2>&1 || true
docker logs mock > /tmp/mock.log 2>&1 || true
docker logs wheel > /tmp/wheel.log 2>&1 || true
docker logs wheel_auth > /tmp/wheel_auth.log 2>&1 || true
- name: Upload container logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: gateway-mocks-logs
path: |
test/gateway.log
test/httpmock.log
name: container-logs
path: /tmp/*.log
if-no-files-found: ignore
- name: upload screenshot
uses: actions/upload-artifact@v4
Expand All @@ -90,8 +110,9 @@ jobs:
path: test/cypress/videos
if-no-files-found: ignore

- name: Stop WHEEL container
- name: Stop all containers and cleanup
if: always()
run: |
docker stop test-wheel_release_test-1 || true
docker rm test-wheel_release_test-1 || true
docker stop gateway mock wheel wheel_auth || true
docker rm gateway mock wheel wheel_auth || true
docker network rm wheel-e2e-net || true
3 changes: 3 additions & 0 deletions .github/workflows/run_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ jobs:
image: naoso5/openpbs
ports:
- 4000:22
volumes:
- /tmp/WHEEL_TEST/shared:/data/shared
env:
WHEEL_USE_HTTP: 1
WHEEL_TEST_REMOTEHOST: testServer
Expand All @@ -25,6 +27,7 @@ jobs:
matrix:
node-version: [20.x]
steps:
- run: sudo mkdir -p /tmp/WHEEL_TEST/shared && sudo chmod 777 /tmp/WHEEL_TEST/shared
- run: mkdir -p ~/.wheel
- run: >
echo '[{
Expand Down
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ projectList.json
jobScript.json
.nyc_output
coverage
*.log*
*.log
*.pid
errorShots
logs
server.crt
Expand All @@ -18,6 +19,7 @@ _user_guide
**/_site
tmp.*
tmp_config.*
test/cypress/fixtures/tmp_*.json
session.db
user.db
server/app/public
Expand All @@ -29,3 +31,7 @@ test/cypress/videos/
test/wheel_config/jobScriptTemplate.json
test/wheel_config/projectList.json.bak
.env
test/cypress/e2e/gfarm/gfarm-e2e.env
test/cypress/downloads
!test/wheel_config_auth/remotehost.json
!test/wheel_config_auth/projectList.json
21 changes: 8 additions & 13 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,16 @@ test/cypress/e2e end-to-end test with cypress
test/cypress/component component test with cypress
```

## npm scripts
- npm run build: build client code
- npm run testDocker -w server: run server unit tests in docker
- npm run test -w server: run server unit tests in native environment
- npm run test:e2e -w test: run end-to-end tests with cypress
- npm run lint: run eslint to check and force code style

## important rules
- All code changes should be made under client, server, or common directories.
- After modifying the code under client or common, please run `npm run build` to rebuild the client code.
- After any code changes, please run lint and fix all errors.
- If you make new functions, you have to add JSDoc comments for them.
- If you make new functions under server, you have to add unit tests for them.
- If you make changes that affect user interactions, you have to add end-to-end tests for them.
- all code changes should be made under client, server, or common directories.
- after modifying the code under client or common you have to build the client code.
- after any code changes, you have to run lint.
- if you make new functions, you have to add JSDoc comments for them.
- if you make new functions under server, you have to add unit tests for them.
- if you make changes that affect the UI, you have to add component tests for them.
- never commit, revert or make any other operations to git repo without explicitly order from user.
- do not change "server/app/db/version.json" this file is automatically updated by github workflow.
- Do not use conditional skip in unit tests except for pre-existing ones.

## implementation policy
- always write code in async/await style
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ run following commands
2. npm run build (install dependent modules for server and client code)
3. cd test; npm install (install e2e test modules)

please read test/README.md for E2E test preparation
please read [TEST_GUIDE.md](TEST_GUIDE.md) for test execution guide (UT and E2E)


### CI/CD process
Expand Down
Loading
Loading