Skip to content

Conversation

@JanZachmann
Copy link
Contributor

The network settings form was incorrectly resetting its fields when the
Core emitted a dirty flag change during initialization or submission.
This was caused by the viewModel.network_form_dirty watcher reacting
to state changes that weren't user-initiated resets.

Changes:

  • Added isStartingFreshEdit and isSubmitting flags to NetworkSettings.vue
  • Updated watcher to ignore dirty flag changes during init and submit
  • Configured Playwright to run serially to prevent Centrifugo interference
  • Added comprehensive network configuration E2E tests

Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
- Implemented auth.spec.ts, device.spec.ts, network.spec.ts
- Added centrifugo fixture helper
- Fixed Centrifugo subscription in App.vue
- Improved test scripts for argument forwarding
- Configured playwright to ignore HTTPS errors
- Added jsonwebtoken for test token generation

Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
Add comprehensive unit tests for NetworkConfigService covering:
- Request validation (DHCP, static IP, netmask boundaries)
- INI file generation for systemd-networkd
- Rollback response structure
- camelCase serialization/deserialization
- enable_rollback field handling

Tests use tempfile for filesystem operations and replicate
production INI generation logic in isolation.

Note: Rollback file I/O tests not included due to hardcoded
paths (/network/, /tmp/). Would require path injection refactor.

14 tests added, bringing total backend tests from 40 to 54.

Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
Expand firmware service test coverage to validate file operations
and device service delegation:
- clear_data_folder removes files, preserves subdirectories
- load_update forwards requests to device service client
- run_update forwards requests with validation flag

Tests use mockall to mock DeviceServiceClient for async operations.

Note: clear_data_folder tests share temp directory and may race
in parallel. Run with --test-threads=1 if flaky.

7 tests total (6 new), bringing backend tests from 54 to 60.

Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
Add comprehensive unit tests for OmnectDeviceServiceClient covering:
- URL building and path normalization
- Semver version requirement parsing and matching
- Version mismatch detection for healthcheck
- Publish endpoint state tracking
- API endpoint constants validation

Tests validate client logic without requiring actual HTTP calls
or Unix socket connections.

15 tests added, bringing total backend tests from 60 to 75.

Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
…-client-tests

Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
The rollback notification was incorrectly reappearing on subsequent
logins even after the user acknowledged it. This occurred because
the acknowledgment request required authentication, but the rollback
dialog appears before login (in App.vue onMounted), so no auth token
was available. This caused the /ack-rollback POST to silently fail.

Changes:
- Extended unauth_post! macro with Pattern 0 for simple POST without body
- Refactored handle_ack_rollback to use unauth_post! instead of auth_post!
- Improved error handling in clear_rollback_occurred with proper logging
- Added E2E test to verify rollback status is cleared and doesn't reappear

The fix allows the rollback acknowledgment to work correctly before login,
ensuring the backend marker file is properly cleared.

Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
Extended the rollback test to publish network status via Centrifugo
with the original IP address, simulating a successful rollback scenario.
This ensures the test validates that the correct network configuration
is shown after a rollback occurs.

Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
@JanZachmann JanZachmann force-pushed the fix/network-rollback-status-persistence branch from 703ffe9 to ecca58c Compare January 15, 2026 15:53
The network settings form was incorrectly resetting its fields when the
Core emitted a dirty flag change during initialization or submission.
This was caused by the `viewModel.network_form_dirty` watcher reacting
to state changes that weren't user-initiated resets.

Changes:
- Added `isStartingFreshEdit` and `isSubmitting` flags to `NetworkSettings.vue`
- Updated watcher to ignore dirty flag changes during init and submit
- Configured Playwright to run serially to prevent Centrifugo interference
- Added comprehensive network configuration E2E tests

Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
@JanZachmann JanZachmann force-pushed the fix/network-rollback-status-persistence branch from ecca58c to d6c7e98 Compare January 15, 2026 16:08
Signed-off-by: Buell <50990105+JanZachmann@users.noreply.github.com>
@JanZachmann JanZachmann merged commit 767692f into omnect:main Jan 15, 2026
2 checks passed
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