Goal
Create the basic smoke-test foundation for the current Nextcloud Docker Compose stack and implement the first minimal test scenario.
Before changing the container architecture, we need a small test foundation that can be extended step by step.
The first scenario should answer only:
Can an isolated instance of the current stack start and reach an installed Nextcloud state?
Testing approach
Implement the smoke test as a real test that can run independently from GitHub Actions.
GitHub Actions must not contain the test scenario itself. CI integration will be added later and will only execute the same repository test command.
Use a testing approach that provides clear scenarios, assertions, failures, setup, and cleanup.
For infrastructure-level tests, a shell-oriented test framework such as Bats is appropriate.
Avoid creating one large procedural script that becomes a custom test framework.
First scenario
Implement one initial smoke-test scenario.
The scenario must:
- start an isolated instance of the current Compose-based environment;
- wait for Nextcloud using a real readiness condition instead of a fixed startup delay;
- run
occ status;
- verify that Nextcloud reports an installed instance;
- fail with useful output if the stack cannot start or Nextcloud does not become ready within a reasonable timeout.
The repository already uses occ status --output=json as a readiness pattern. Reuse that approach where appropriate.
Do not add additional runtime scenarios in this issue.
Isolation and cleanup
The test must not depend on an existing deployment or existing application data.
Use an isolated Compose project and test-specific resources where necessary.
Test-specific Compose overrides or environment values may be added for isolation, but reuse the current runtime instead of creating a separate test architecture.
Resources created by the test must be cleaned up after success or failure.
Cleanup must not remove resources that existed before the test run.
Local execution
Provide one documented repository command that runs the smoke test locally.
The command must:
- prepare the isolated test environment;
- execute the scenario;
- return a non-zero status when the scenario fails;
- clean up test-created resources.
The test must be runnable and debuggable without GitHub Actions.
Future scenarios
This issue creates the foundation for additional smoke-test scenarios.
Later work will extend the suite with checks for other essential parts of the stack, such as Redis and the web service.
Those additional scenarios are not part of this issue.
Nextcloud 35 development image
The version-specific Nextcloud 35 development image is temporary and will be replaced later in the parent Epic by a reusable way to follow Nextcloud master.
Do not change or remove that implementation in this issue.
The first smoke test does not need special coverage for the Nextcloud 35 development image.
Acceptance criteria
- A reusable smoke-test structure exists in the repository.
- One documented command runs the test locally.
- The test is independent from GitHub Actions.
- One scenario verifies that an isolated instance of the current Compose-based stack can start.
- Nextcloud readiness is detected without a fixed startup delay.
occ status confirms an installed Nextcloud instance.
- Failures return a non-zero result with useful output.
- Test-created resources are cleaned up safely.
- Existing environments and persistent data are not modified or removed.
- No additional runtime scenarios are introduced in this issue.
- No GitHub Actions workflow is added as part of this issue.
Good first issue
Keep this focused on creating the smoke-test foundation and one minimal scenario.
Additional runtime scenarios and CI integration will be handled separately.
Goal
Create the basic smoke-test foundation for the current Nextcloud Docker Compose stack and implement the first minimal test scenario.
Before changing the container architecture, we need a small test foundation that can be extended step by step.
The first scenario should answer only:
Testing approach
Implement the smoke test as a real test that can run independently from GitHub Actions.
GitHub Actions must not contain the test scenario itself. CI integration will be added later and will only execute the same repository test command.
Use a testing approach that provides clear scenarios, assertions, failures, setup, and cleanup.
For infrastructure-level tests, a shell-oriented test framework such as Bats is appropriate.
Avoid creating one large procedural script that becomes a custom test framework.
First scenario
Implement one initial smoke-test scenario.
The scenario must:
occ status;The repository already uses
occ status --output=jsonas a readiness pattern. Reuse that approach where appropriate.Do not add additional runtime scenarios in this issue.
Isolation and cleanup
The test must not depend on an existing deployment or existing application data.
Use an isolated Compose project and test-specific resources where necessary.
Test-specific Compose overrides or environment values may be added for isolation, but reuse the current runtime instead of creating a separate test architecture.
Resources created by the test must be cleaned up after success or failure.
Cleanup must not remove resources that existed before the test run.
Local execution
Provide one documented repository command that runs the smoke test locally.
The command must:
The test must be runnable and debuggable without GitHub Actions.
Future scenarios
This issue creates the foundation for additional smoke-test scenarios.
Later work will extend the suite with checks for other essential parts of the stack, such as Redis and the web service.
Those additional scenarios are not part of this issue.
Nextcloud 35 development image
The version-specific Nextcloud 35 development image is temporary and will be replaced later in the parent Epic by a reusable way to follow Nextcloud
master.Do not change or remove that implementation in this issue.
The first smoke test does not need special coverage for the Nextcloud 35 development image.
Acceptance criteria
occ statusconfirms an installed Nextcloud instance.Good first issue
Keep this focused on creating the smoke-test foundation and one minimal scenario.
Additional runtime scenarios and CI integration will be handled separately.