Fix race conditions, memory leaks, Chrome crashes, and add GitHub Actions CI#104
Merged
Conversation
…transfer will be occurred
…onent on remotehost even if cleanup Flag is true
…inside PS component
…onditions - componentGraph: check targetComponent.state instead of projectState to decide between "clean" and "delete" context menu items so the menu reflects each component's individual run state - fileBrowser: reset activeItem/selectedFile when switching to a different component to prevent stale selection glitches - fileBrowser: add fileListSeq counter to drop in-flight getFileList callbacks that arrive after a newer request was issued - remotehostManager: track isLoaded flag and show table loading indicator until both getJobSchedulerLabelList and getHostList responses arrive Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
componentContextMenuItems used targetComponent.state which could be stale after doClean replaced the component object in the store. Look up the current component by ID in currentComponent.descendants to get the live state, falling back to targetComponent.state when not found. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…visibility - Use safer way to updateComponent
- except inputFiles and outputFiles when updating with data from server
- fix lint error
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add wheel_auth container to run_cypress.yml (port 8090) for auth.cy.js - Add wait for port 8090 to be ready - Add socket.io-client to test/package.json dependencies (required for resetMockProjectList task) - Add wheel_auth to cleanup/log collection steps Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Remove test/wheel_config_auth/ from .gitignore (files contain only empty JSON, no sensitive data) - Add negation rules for remotehost.json and projectList.json in wheel_config_auth/ - Required by run_cypress.yml to start wheel_auth container for auth.cy.js tests Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…navigation - Add --disable-dev-shm-usage Chrome flag in CI only (GitHub Actions /dev/shm is 64MB, causing Chrome renderer crash during file upload in importProject) - Fix goHome command to navigate to baseUrl when browser is left on a different server (e.g., after auth.cy.js which uses port 8090) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
GitHub Actions runners only have 64MB /dev/shm by default, which causes Chrome to crash when processing file uploads in importProject.cy.js. Mount a 512MB tmpfs at /dev/shm before running tests. Remove --disable-dev-shm-usage flag (no longer needed with sufficient shm). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- storage.cy.js: add .should('not.be.disabled') before every
file_browser-remove_file-btn click. The remove button's enabled
state depends on Vue's reactive isFileSelected computed which
updates asynchronously after a treeview click. Without the guard,
Cypress can attempt the click before the DOM update propagates,
resulting in a 'element is disabled' error in a warm browser.
- commands-workFlow.js (cleanFileBrowserItems): same guard added
for consistency and to prevent silent cleanup failures.
- task.cy.js: correct the assertion for
'シェルスクリプト選択セレクトボックス表示確認' from
.should('be.not.visible') to .should('be.visible').
The test opens the advanced panel and the test name explicitly
says the combobox should be displayed. The previous assertion
accidentally passed because Cypress caught the element during
the Vuetify expansion-panel open animation (height 0,
overflow hidden) before it became visible. In a warm browser
the animation completes faster and the incorrect assertion fails.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR contains a series of bug fixes and improvements developed and validated with a full E2E test suite (mock and real-app, local and CI).
All 681 E2E tests pass (660 passing, 20 pending) in:
npm run -w test test:e2e:mock)npm run -w test test:e2e)Key Changes
1. Chrome Renderer Crash Fix
:menu-props="{ transition: false }"to allv-comboboxandv-selectcomponents inclient/v-comboboxdropdown andv-snackbarboth use<Teleport>to render in.v-overlay-container. When they render simultaneously, Chrome's GPU rendering layers conflict and the renderer crashes.2. componentProperty Update Fix
inputFilesandoutputFileswhich are managed by dedicated socket events.updateComponentcall fromstore/index.js(was causing double-sends and data corruption).3. server: updateComponent — inputFiles/outputFiles Protection
server/app/core/updateComponent.js: patches forinputFilesandoutputFilesare now ignored entirely.addOutputFile,removeOutputFile, etc.). AllowingupdateComponentto modify them caused data corruption (files deleted when panel opened with stale state).4. Race Condition Fixes
fileBrowser(getFiles response ordering)componentProperty(component state updates during editing)5. Memory Leak Fixes
SBS— Serial Bounded Scheduler) to prevent queue bloat6. E2E Test Improvements
resetMockProjectListtask to reset mock server state between spec files (prevents pagination issues from accumulated projects)remoteHost.cy.jstiming: added timeout for buttons that disappear during socket-triggered re-rendersgoHomecommand: handles cross-server navigation afterauth.cy.js(which visits port 8090)beforeEach7. GitHub Actions CI Workflow
.github/workflows/run_cypress.ymlfor automated E2E testing on every pushwheel,wheel_auth,mock,gateway/dev/shmto prevent Chrome renderer crash (GitHub Actions default is 64MB)test/wheel_config_auth/config files for the anonymous-login WHEEL instance used byauth.cy.js