diff --git a/.github/workflows/share-with-os-v1-oc-10.yml b/.github/workflows/share-with-os-v1-oc-v10.yml similarity index 100% rename from .github/workflows/share-with-os-v1-oc-10.yml rename to .github/workflows/share-with-os-v1-oc-v10.yml diff --git a/.github/workflows/zola.yml b/.github/workflows/zola.yml new file mode 100644 index 00000000..a337339e --- /dev/null +++ b/.github/workflows/zola.yml @@ -0,0 +1,53 @@ +name: Deploy Zola site to Pages + +on: + push: + branches: ["main"] + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Zola + run: | + ZOLA_VERSION="0.18.0" + wget -q "https://github.com/getzola/zola/releases/download/v${ZOLA_VERSION}/zola-v${ZOLA_VERSION}-x86_64-unknown-linux-gnu.tar.gz" + tar xzf "zola-v${ZOLA_VERSION}-x86_64-unknown-linux-gnu.tar.gz" + sudo mv zola /usr/local/bin + + - name: Build + run: zola build --root site + + - name: Setup Pages + uses: actions/configure-pages@v4 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: site/public + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/README.md b/README.md index ca3228b0..f2f6e31e 100644 --- a/README.md +++ b/README.md @@ -1,518 +1,84 @@ -# Development Stockpile ๐Ÿ› ๏ธ๐Ÿ“ฆ -A collection of Docker images and scripts designed to set up a complete development environment for building and testing applications. ๐Ÿš€ +# Development Stockpile ๐Ÿ› ๏ธ ---- - -## Table of Contents ๐Ÿ“‘ +
-1. [Our Dockerized EFSS Images](#our-dockerized-efss-images-) - - [Nextcloud Versions](#nextcloud-versions) - - [ownCloud Versions](#owncloud-versions) - - [Docker Pull Commands](#docker-pull-commands) -2. [Our Dockerized Reva Images](#our-dockerized-reva-images-) - - [Reva Versions](#reva-versions) - - [Docker Pull Commands](#docker-pull-commands-1) -3. [Open Cloud Mesh Test Suite](#open-cloud-mesh-test-suite-) - - [What is the Open Cloud Mesh Test Suite?](#what-is-the-open-cloud-mesh-test-suite-) - - [Why Open Cloud Mesh?](#why-open-cloud-mesh-) - - [Features of the OCM Test Suite](#features-of-the-ocm-test-suite-) - - [Key Test Categories](#key-test-categories-) - - [Supported Platforms](#supported-platforms-) - - [How It Works](#how-it-works-) - - [Benefits of the Open Cloud Mesh Test Suite](#benefits-of-the-open-cloud-mesh-test-suite-) - - [Learn More](#learn-more-) -4. [OCM Compatibility Results](#ocm-compatibility-results-) - - [Legend](#legend-) - - [Login Tests](#login-tests-) - - [Share Link Tests](#share-link-tests-) - - [Share With Tests](#share-with-tests-) - - [Invite Link Tests](#invite-link-tests-) -5. [Developer's Guide for the Open Cloud Mesh Test Suite](#developers-guide-for-the-open-cloud-mesh-test-suite-) - - [Command Syntax](#command-syntax-๏ธ) - - [Example Usage](#example-usage-) - - [Notes](#notes-) -6. [Debugging](#debugging) - - [RD-SRAM](#rd-sram) - - [ScienceMesh](#sciencemesh) - - [Trashbin](#trashbin) -7. [Using XDebug](#using-xdebug) -8. [SOLID RemoteStorage](#solid-remotestorage) +[![Project Status](https://img.shields.io/badge/Status-Active-success?style=for-the-badge)](https://github.com/pondersource/dev-stock) +[![License](https://img.shields.io/badge/License-MIT-blue?style=for-the-badge)](LICENSE) +[![OCM Standard](https://img.shields.io/badge/OCM-W3C_Community_Group-orange?style=for-the-badge)](https://www.w3.org/community/ocm/) ---- +Your complete toolkit for Enterprise File Sync & Share (EFSS) development and testing ๐Ÿš€ -## Our Dockerized EFSS Images ๐Ÿ“‚ -**EFSS (Enterprise File Sync and Share)** solutions are software platforms designed to enable organizations to securely share and synchronize files, both internally and externally. -These systems are built to ensure data integrity, compliance, and accessibility, making them essential for modern collaboration. -Some popular EFSS platforms include **Nextcloud** and **ownCloud**, which provide robust, open-source solutions for enterprise file management. +[Getting Started](docs/guides/getting-started.md) โ€ข +[Documentation](#documentation) โ€ข +[Contributing](CONTRIBUTING.md) -### Nextcloud Versions +
-| **Repository** | **Tag** | **Branch** | **Upstream** | -|----------------------------------|-----------------|---------------------------------------------------------------------------|------------------------------------------------------------------------------| -| pondersource/nextcloud | latest, v30.0.2 | [v30.0.2](https://github.com/nextcloud/server/releases/tag/v30.0.2) | [Official Nextcloud Server](https://github.com/nextcloud/server) | -| pondersource/nextcloud | v29.0.10 | [v29.0.10](https://github.com/nextcloud/server/releases/tag/v29.0.10) | [Official Nextcloud Server](https://github.com/nextcloud/server) | -| pondersource/nextcloud | v28.0.14 | [v28.0.14](https://github.com/nextcloud/server/releases/tag/v28.0.14) | [Official Nextcloud Server](https://github.com/nextcloud/server) | -| pondersource/nextcloud | v27.1.11 | [v27.1.11](https://github.com/nextcloud/server/releases/tag/v27.1.11) | [Official Nextcloud Server](https://github.com/nextcloud/server) | - ---- +## ๐ŸŒŸ Overview -### ownCloud Versions +Development Stockpile is a comprehensive collection of Docker images and testing tools designed to streamline the development and testing of Enterprise File Sync & Share (EFSS) applications. Our primary focus is on enabling seamless interoperability testing between different EFSS platforms through the Open Cloud Mesh (OCM) standard. -| **Repository** | **Tag** | **Branch** | **Upstream** | -|----------------------------------|---------------|----------------------------------------------------------------------------|------------------------------------------------------------------------------| -| pondersource/owncloud | v10.15.0 | [v10.15.0](https://github.com/owncloud/core/releases/tag/v10.15.0) | [Official ownCloud Core](https://github.com/owncloud/core) | +### Why Development Stockpile? +- ๐Ÿ”„ **Complete Testing Environment**: Pre-configured Docker images for major EFSS platforms including Nextcloud, ownCloud, and OCM Stub +- ๐Ÿค **Interoperability Focus**: Built-in support for OCM testing between different platforms and versions +- ๐Ÿงช **Comprehensive Test Suite**: Automated testing for login, sharing, and invitation workflows +- ๐Ÿ› ๏ธ **Developer Friendly**: Easy-to-use scripts and containerized development environment +- ๐Ÿ” **Extensive Platform Support**: Support for multiple EFSS versions and configurations -#### Docker Pull Commands -To pull the Docker images for EFSS, use the following commands: +## ๐Ÿš€ Quick Start ```bash -# Pull the latest version of Nextcloud -docker pull pondersource/nextcloud:latest +# Clone the repository +git clone https://github.com/pondersource/dev-stock.git +cd dev-stock -# Pull a specific version of Nextcloud -docker pull pondersource/nextcloud:v30.0.2 -docker pull pondersource/nextcloud:v29.0.10 +# Pull required Docker images +./docker/pull/all.sh -# Pull a specific version of ownCloud -docker pull pondersource/owncloud:v10.15.0 +# Run your first test (example with Nextcloud) +./dev/ocm-test-suite.sh login nextcloud v30.0.2 dev chrome ``` -## Our Dockerized Reva Images ๐Ÿš€ -[**Reva**](https://github.com/cs3org/reva) is a key component in the **CS3API** ecosystem, designed to provide a robust backend for cloud storage and file-sharing services. It acts as a middleware for connecting EFSS platforms, enabling smooth communication and interoperability. +For detailed setup instructions, see our [Getting Started Guide](docs/guides/getting-started.md). ---- - -### Reva Versions - -| **Repository** | **Tag** | **Branch** | **Upstream** | -|------------------------------|---------------|---------------------------------------------------------------------------|-----------------------------------------------------------------------------| -| pondersource/dev-stock-reva | v1.28.0 | [v1.28.0](https://github.com/cs3org/reva/releases/tag/v1.28.0) | [Official Reva Repository](https://github.com/cs3org/reva) | - ---- - -#### Docker Pull Commands -To pull the Docker image for Reva, use the following command: - -```bash -# Pull the specific version of Reva -docker pull pondersource/dev-stock-reva:v1.28.0 -``` - -# Open Cloud Mesh Test Suite ๐ŸŒ๐Ÿงช - -## What is the Open Cloud Mesh Test Suite? ๐Ÿค” - -The **Open Cloud Mesh (OCM) Test Suite** is a comprehensive collection of automated tests designed to validate interoperability between different **Enterprise File Sync and Share (EFSS)** platforms that implement the **Open Cloud Mesh** standard. The Open Cloud Mesh API specification is an open source, community-driven project. The project is hosted as a [W3C Community Group](https://www.w3.org/community/ocm/). - ---- +## ๐Ÿ“š Documentation -## Why Open Cloud Mesh? ๐Ÿค +### Core Documentation +- [Getting Started Guide](docs/guides/getting-started.md) +- [Docker Images](docs/docker-images.md) +- [OCM Test Suite](docs/testing/test-suite.md) +- [Platform Compatibility Matrix](docs/compatibility-matrix.md) -**Open Cloud Mesh (OCM)** aims to bridge the gap between different EFSS systems, allowing organizations to collaborate efficiently, regardless of the platform they use. By implementing OCM: -- **Interoperability**: Files can be shared across platforms like **Nextcloud**, **ownCloud**, **Seafile**, and others. -- **Vendor Independence**: Organizations are not locked into a single EFSS solution. -- **Enhanced Collaboration**: Facilitates file sharing between users and organizations in a secure, standard-compliant way. +### Platform Integration +- [Nextcloud Integration](docs/guides/nextcloud.md) +- [ownCloud Integration](docs/guides/owncloud.md) +- [OCM Stub Usage](docs/guides/ocmstub.md) ---- - -## Features of the OCM Test Suite ๐Ÿš€ - -1. **Cross-Platform Validation**: - - Ensures compatibility between popular EFSS platforms like **Nextcloud**, **ownCloud**, **Seafile**, and **oCIS**. - -2. **Comprehensive Coverage**: - - Includes tests for **file sharing**, **link sharing**, **user invitations**. - -3. **Version-Aware Testing**: - - Validates platform behavior across multiple versions, ensuring backward compatibility. - -4. **Automated CI Integration**: - - Runs tests on a **Continuous Integration (CI)** pipeline for every new EFSS version release. - ---- - -## Key Test Categories ๐Ÿ“ - -1. **Login Tests**: - - Simple authentication for different EFSS platforms. - -2. **Share Link Tests**: - - Tests the ability to share files and directories via public links across platforms and the ability to add - a public link share to your own EFSS. - -3. **Share With Tests**: - - Validates sharing files directly with specific users on other EFSS platforms. - -4. **Invite Link Tests**: - - Checks the invitation workflows, enabling users to invite external collaborators seamlessly. - ---- - -## Supported Platforms ๐Ÿ“‹ - -The test suite currently supports: -- **Nextcloud** (v27, v28, v29, v30) -- **ownCloud** (v10.15.0) -- **oCIS** (v5.0.9) -- **Seafile** (v11.0.5) -- **OcmStub** (v1.0.0) - ---- +### Other Topics +- [ScienceMesh Integration](docs/scienecemesh.md) +- [SOLID RemoteStorage](docs/solid-remotestorage.md) +- [Debugging with Xdebug](docs/xdebug.md) +- [GitHub Actions Integration](docs/guides/act.md) -## How It Works ๐Ÿ”ง +## ๐Ÿ”ง Supported Platforms -1. **Dockerized Test Environment**: - - The test suite uses Docker containers to simulate various EFSS environments, ensuring isolation and reproducibility. +- **Nextcloud**: v27.x, v28.x, v30.x +- **ownCloud**: v10.x +- **OCM Stub**: v1.x +- **Seafile**: v11.x +- **OCIS**: v5.x -2. **End-to-End Testing with Headless Cypress**: - - The test suite uses **Cypress** to run end-to-end (E2E) tests in a headless browser environment. - - These tests simulate real user interactions across EFSS platforms, ensuring workflows like login, file sharing, and invitations work seamlessly. +## ๐Ÿค Contributing +We welcome contributions! Whether it's adding support for new platforms, improving documentation, or fixing bugs, please see our [Contributing Guidelines](CONTRIBUTING.md) for details. -3. **CI Integration**: - - Each test runs as part of a **GitHub Actions CI pipeline**, with real-time feedback via badges. +## ๐Ÿ“„ License -4. **Status Reporting**: - - Results are displayed as status badges in a grid format, showing the success or failure of tests for each platform/version combination. +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. --- -## Benefits of the Open Cloud Mesh Test Suite ๐ŸŒŸ - -- **Interoperability Assurance**: Confirms that users can collaborate across EFSS platforms without issues. - ---- - -### Learn More ๐Ÿ”— - -To learn more about the **Open Cloud Mesh** standard, visit: [OCM-API](https://github.com/cs3org/OCM-API) - - -# OCM Compatibility Results ๐Ÿšฆ - -## Legend ๐Ÿ“– - -- **![Possible](https://img.shields.io/badge/Possible-blue?style=flat-square)** Indicates that the test scenario is supported for the specified combination of sender and receiver platforms but the test scripts are not available yet. -- **![Impossible](https://img.shields.io/badge/Impossible-orange?style=flat-square)** Indicates that the test scenario is not supported for the specified combination of sender and receiver platforms. -- **CI Badge**: Displays the status of the test in the CI pipeline. Click the badge to view the detailed workflow or logs on GitHub Actions. - - **Green (โœ…)**: Test passed successfully. - - **Red (โŒ)**: Test failed. - - **Yellow (๐Ÿ•’)**: Test is in progress or has been queued. -- **Sender (R)**: Means the platform specified on the Row (R) is sending the action. -- **Receiver (C)**: Means the platform specified on the Column (C) is receiving the action. - - -## Login Tests ๐Ÿ” -Verifies authentication mechanisms for supported EFSS platforms, ensuring users can securely log in. - -| Test Name | Nextcloud v27.1.11 | Nextcloud v28.0.14 | oCIS v5.0.9 | OcmStub v1.0.0 | ownCloud v10.15.0 | Seafile v11.0.5 | -|-----------|--------------------|--------------------|-------------|----------------|-------------------|-----------------| -| **Login** | [![NC v27.1.11](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-nextcloud-v27.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/login-nextcloud-v27.yml) | [![NC v28.0.14](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-nextcloud-v28.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/login-nextcloud-v28.yml) | [![oCIS v5.0.9](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-ocis-v5.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/login-ocis-v5.yml) | [![OcmStub v1.0](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-ocmstub-v1.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/login-ocmstub-v1.yml) | [![ownCloud v10.15.0](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-owncloud-v10.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/login-owncloud-v10.yml) | [![Seafile v11.0.5](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-seafile-v11.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/login-seafile-v11.yml) | - ---- - -## Share Link Tests ๐Ÿ”— -Tests the ability to create and manage public links for file sharing, and their integration into EFSS platforms. - -| Sender (R) / Receiver (C) | Nextcloud v27.1.11 | Nextcloud v28.0.14 | ownCloud v10.15.0 | -|---------------------------|--------------------|--------------------|-------------------| -| **Nextcloud v27.1.11** | [![NC v27 โ†” NC v27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v27-nc-v27.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v27-nc-v27.yml) | [![NC v27 โ†” NC v28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v27-nc-v28.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v27-nc-v28.yml) | [![NC v27 โ†” OC v10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v27-oc-v10.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v27-oc-v10.yml) | -| **Nextcloud v28.0.14** | [![NC v28 โ†” NC v27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v28-nc-v27.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v28-nc-v27.yml) | [![NC v28 โ†” NC v28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v28-nc-v28.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v28-nc-v28.yml) | [![NC v28 โ†” OC v10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v28-oc-v10.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v28-oc-v10.yml) | -| **ownCloud v10.15.0** | [![OC v10 โ†” NC v27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-oc-v10-nc-v27.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-oc-v10-nc-v27.yml) | [![OC v10 โ†” NC v28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-oc-v10-nc-v28.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-oc-v10-nc-v28.yml) | [![OC v10 โ†” OC v10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-oc-v10-oc-v10.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-oc-v10-oc-v10.yml) | - ---- - -## Share With Tests ๐Ÿค -Validates direct file sharing between users on different EFSS platforms, ensuring seamless collaboration. - -| Sender (R) / Receiver (C) | Nextcloud v27.1.11 | Nextcloud v28.0.14 | OcmStub v1.0.0 | ownCloud v10.15.0 | Seafile v11.0.5 | -|---------------------------|--------------------|--------------------|----------------|-------------------|-----------------| -| **Nextcloud v27.1.11** | [![NC โ†” NC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v27-nc-v27.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v27-nc-v27.yml) | [![NC โ†” NC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v27-nc-v28.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v27-nc-v28.yml) | [![NC โ†” OS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v27-os-v1.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v27-os-v1.yml) | [![NC โ†” OC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v27-oc-v10.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v27-oc-v10.yml) | ![Impossible](https://img.shields.io/badge/Impossible-orange?style=flat-square) | -| **Nextcloud v28.0.14** | [![NC โ†” NC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v28-nc-v27.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v28-nc-v27.yml) | [![NC โ†” NC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v28-nc-v28.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v28-nc-v28.yml) | [![NC โ†” OS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v28-os-v1.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v28-os-v1.yml) | [![NC โ†” OC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v28-oc-v10.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v28-oc-v10.yml) | ![Impossible](https://img.shields.io/badge/Impossible-orange?style=flat-square) | -| **OcmStub v1.0.0** | ![Possible](https://img.shields.io/badge/Possible-blue?style=flat-square) | ![Possible](https://img.shields.io/badge/Possible-blue?style=flat-square) | [![OS โ†” OS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-os-v1-os-v1.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-os-v1-os-v1.yml) | ![Possible](https://img.shields.io/badge/Possible-blue?style=flat-square) | ![Impossible](https://img.shields.io/badge/Impossible-orange?style=flat-square) | -| **ownCloud v10.15.0** | [![OC โ†” NC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-oc-v10-nc-v27.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-oc-v10-nc-v27.yml) | [![OC โ†” NC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-oc-v10-nc-v28.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-oc-v10-nc-v28.yml) | [![OC โ†” OS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-oc-v10-os-v1.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-oc-v10-os-v1.yml) | [![OC โ†” OC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-oc-v10-oc-v10.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-oc-v10-oc-v10.yml) | ![Impossible](https://img.shields.io/badge/Impossible-orange?style=flat-square) | -| **Seafile v11.0.5** | ![Impossible](https://img.shields.io/badge/Impossible-orange?style=flat-square) | ![Impossible](https://img.shields.io/badge/Impossible-orange?style=flat-square) | ![Impossible](https://img.shields.io/badge/Impossible-orange?style=flat-square) | ![Impossible](https://img.shields.io/badge/Impossible-orange?style=flat-square) | [![SF โ†” SF](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-sf-v11-sf-v11.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-sf-v11-sf-v11.yml) | - ---- - -## Invite Link Tests ๐Ÿ“จ -Checks workflows for sending and accepting invitations to collaborate between external users or organizations. - -| Sender (R) / Receiver (C) | Nextcloud v27.1.11 with ScienceMesh | oCIS v5.0.9 | ownCloud v10.15.0 with ScienceMesh | -|---------------------------|-------------------------------------|-------------|-----------------------------------| -| **Nextcloud v27.1.11 with ScienceMesh** | [![NC โ†” NC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-nc-v27-nc-v27.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-nc-v27-nc-v27.yml) | [![NC โ†” oCIS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-nc-v27-ocis-v5.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-nc-v27-ocis-v5.yml) | [![NC โ†” OC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-nc-v27-oc-v10.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-nc-v27-oc-v10.yml) | -| **oCIS v5.0.9** | [![oCIS โ†” NC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-ocis-v5-nc-v27.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-ocis-v5-nc-v27.yml) | [![oCIS โ†” oCIS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-ocis-v5-ocis-v5.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-ocis-v5-ocis-v5.yml) | [![oCIS โ†” OC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-ocis-v5-oc-v10.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-ocis-v5-oc-v10.yml) | -| **ownCloud v10.15.0 with ScienceMesh** | [![OC โ†” NC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-oc-v10-nc-v27.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-oc-v10-nc-v27.yml) | [![OC โ†” oCIS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-oc-v10-ocis-v5.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-oc-v10-ocis-v5.yml) | [![OC โ†” OC](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-oc-v10-oc-v10.yml?branch=main&style=flat-square&label=)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-oc-v10-oc-v10.yml) | - -# Developer's Guide for the Open Cloud Mesh Test Suite ๐Ÿ› ๏ธ - -The **Open Cloud Mesh Test Suite** is designed to help developers run and validate specific test scenarios across multiple EFSS platforms. This guide provides instructions on how to execute specific tests using the command-line interface. - ---- - -## Command Syntax ๐Ÿ–ฅ๏ธ - -To run specific tests, use the following command syntax: - -```bash -./dev/ocm-test-suite.sh [test scenario] [platform 1] [platform 1 version] [run mode] [cypress runner] [platform 2] [platform 2 version] -``` - -### Arguments Breakdown: -1. **Test Scenario:** - - The type of test you want to run. Supported scenarios: - 1. `login` - 2. `share-with` - 3. `invite-link` - 4. `share-link` - - -2. **Platform 1:** - - The first EFSS platform being tested. Supported platforms: - 1. `nextcloud` - 2. `owncloud` - 3. `seafile` - 4. `ocis` - -3. **Platform 1 Version:** - - The specific version of Platform 1. For example: `v27.1.11`. - -4. **Run Mode:** - - Defines the environment for the test execution: - 1. `dev`: Local development mode. - 2. `ci`: Continuous Integration mode. - -5. **Cypress Runner:** - - The browser to be used by the Cypress test runner: - 1. `electron` (default for headless mode) - 2. `chrome` - 3. `firefox` - 4. `edge` - -6. **Platform 2 (Optional):** - - The second EFSS platform involved in cross-platform scenarios. Supported platforms: - 1. `nextcloud` - 2. `owncloud` - 3. `seafile` - 4. `ocis` - -7. **Platform 2 Version (Optional):** - - The specific version of Platform 2. For example: `v28.0.14`. - - -## Example Usage ๐Ÿ“˜ - - -### Running a share-with Test: - -Run a "share-with" test between two Nextcloud instances using version `v27.1.11`, in CI mode, with the Electron browser: - -```bash -./dev/ocm-test-suite.sh share-with nextcloud v27.1.11 ci electron nextcloud v27.1.11 -``` - -### Running a login Test: -Run a "login" test on a Seafile instance using version `v11.0.5`, in development mode, with the Chrome browser: - -```bash -./dev/ocm-test-suite.sh login seafile v11.0.5 dev chrome -``` - -### Running a share-link Test: -Run a "share-link" test between ownCloud and Nextcloud instances, using versions `v10.15.0` and `v29.0.10`, respectively, in CI mode with Firefox: - -```bash -./dev/ocm-test-suite.sh share-link owncloud v10.15.0 ci firefox nextcloud v29.0.10 -``` - -## Notes ๐Ÿ“ - -### Platform Versions: -Ensure the versions provided are supported by the test suite. Refer to the Supported Platforms Section for the latest compatibility list. - - -### Cypress Runner: -Using `electron` is recommended for headless CI testing. -Other browsers (`chrome`, `firefox`, `edge`) can be used for debugging or local testing. - -### Run Mode: -Use dev for iterative local testing with enhanced logging. -Use ci for automated pipelines with concise output. - -### Cross-Platform Tests: -For scenarios requiring two platforms (e.g., `share-with`, `invite-link`), specify both Platform 1 and Platform 2 along with their versions. - -### Forensic Logs: -The Nextcloud images have [`mod_log_forensic`](https://httpd.apache.org/docs/2.4/mod/mod_log_forensic.html) and [`mod_security`](https://stackoverflow.com/a/47456612) -enabled, so you can try this for debugging: - -```bash -docker exec -it nextcloud1.docker tail -f /etc/apache2/forensic.log -docker exec -it nextcloud1.docker tail -f /var/log/apache2/modsec_audit.log -``` - -# Debugging -## RD-SRAM - -See https://github.com/SURFnet/rd-sram-integration#testing-environment for up-to-date instructions. - -## ScienceMesh - -This was moved to https://github.com/sciencemesh/dev-stock . - -The scripts for ScienceMesh still exist here but are not guaranteed to work as expected. - -## Trashbin - -See https://github.com/pondersource/surf-trashbin-app - -# Using XDebug - -See [docs](./docs/xdebug.md) - -# SOLID RemoteStorage -for development see [docs](./docs/solid-remotestorage.md) - - -# OCM Test Suite Documents - -This is still a work in progress and will be moved to other place, for now I like to access it here. - - -## Flow graph of complete OCM Test suite flow for share-with between Nextcloud and Nextcloud -### 1. Initial Setup (GitHub Actions Trigger, Docker Pulls, and Environment Initialization) -```mermaid -flowchart TD - %% Start of the workflow - A[GitHub Actions Triggered] --> B[Checkout Repository] - - %% Pull Docker Images - B --> C[Pull Docker Images] - C --> C1[Pull MariaDB:11.4.2] - C --> C2[Pull Cypress:13.13.1] - C --> C3[Pull pondersource/nextcloud:v27.1.11] - - %% Initialize Environment - C3 --> D[Initialize Environment] - D --> D1[Resolve Script Directory] - D --> D2[Set ENV_ROOT] - D --> D3[Export ENV_ROOT] - - %% Validate Files and Directories - D --> E[Validate Required Files & Directories] - E --> E1[Check TLS Certificates] - E --> E2[Check Cypress Configuration] -``` - -### 2. Docker Network and Container Management -```mermaid -flowchart TD - %% Parse Arguments - E[Validate Required Files & Directories] --> F[Parse Command-Line Arguments] - F --> F1[Set EFSS_PLATFORM_1_VERSION] - F --> F2[Set EFSS_PLATFORM_2_VERSION] - F --> F3[Set SCRIPT_MODE - dev/ci] - F --> F4[Set BROWSER_PLATFORM - electron/chrome/edge/firefox] - - %% Clean Up Previous Resources - F --> G[Clean Up Previous Resources] - G --> G1[Run clean.sh] - G --> G2[Remove Temporary Directories] - G --> G3[Remove Old Docker Containers] - - %% Create Docker Network - G --> H[Create Docker Network: testnet] - H --> H1{Does testnet exist?} - H1 -- Yes --> H2[Use Existing testnet] - H1 -- No --> H3[Create testnet] -``` - -```mermaid -flowchart TD - %% Start MariaDB Container - H2[Use Existing testnet] --> I[Start MariaDB Container] - I --> I1[Configure MariaDB Environment Variables] - I --> I2[Connect to testnet] - I --> I3[Wait for MariaDB Port 3306] - - %% Start Nextcloud Containers - I --> J[Start Nextcloud Containers] - J --> J1[Start nextcloud1.docker] - J1 --> J1a[Configure Nextcloud1 with MariaDB] - J1 --> J1b[Set Admin Credentials - einstein/relativity] - J1 --> J1c[Wait for Nextcloud1 Port 443] - - J --> J2[Start nextcloud2.docker] - J2 --> J2a[Configure Nextcloud2 with MariaDB] - J2 --> J2b[Set Admin Credentials - michiel/dejong] - J2 --> J2c[Wait for Nextcloud2 Port 443] -``` - -### 3. Dev Mode and CI Mode Execution -```mermaid -flowchart TD - %% Conditional: Dev Mode vs CI Mode - J1c[Wait for Nextcloud1 Port 443] --> K{SCRIPT_MODE} - J2c[Wait for Nextcloud2 Port 443] --> K - K -- Dev --> L[Start Dev Mode Containers] - K -- CI --> M[Start CI Mode Containers] - - %% Dev Mode Setup - L --> L1[Start Firefox Container] - L --> L2[Start VNC Server Container] - L --> L3[Start Cypress Container in Dev Mode] - - %% Provide Dev Mode Instructions - L1 --> N[Provide Dev Mode Access Instructions] - L2 --> N - L3 --> N - N --> O1[Run Cypress Tests in Dev Mode via VNC on port 5700] - N --> O2[Manually Access Containers via Firefox on port 5800] - - %% CI Mode Setup - M --> M1[Configure Cypress for CI Mode] - M1 --> M2[Run Cypress Tests in CI Mode] -``` - -### 4. Cypress Test Execution and Result Verification -```mermaid -flowchart TD - %% Cypress Test Execution - O[Run Cypress Tests in Dev Mode] --> P[Cypress Executes Open Cloud Mesh Test Suite] - M2[Run Cypress Tests in CI Mode] --> P - - %% Verify Test Results - P --> Q{Test Success?} - Q -- Yes --> R[Mark as Passed] - Q -- No --> S[Mark as Failed] - - %% Subgraphs for better organization - classDef success fill:#d4edda,stroke:#28a745,stroke-width:2px; - classDef failure fill:#f8d7da,stroke:#dc3545,stroke-width:2px; - class R success; - class S failure; - - %% Modify text color to black for specific nodes - style R fill:#d4edda,stroke:#28a745,stroke-width:2px,color:#000000 - style S fill:#f8d7da,stroke:#dc3545,stroke-width:2px,color:#000000 -``` - -### 5. Final Cleanup and Workflow Conclusion -```mermaid -flowchart TD - %% Final Cleanup - R[Mark as Passed] --> T[Cleanup Resources] - S[Mark as Failed] --> T - T --> U[End Workflow] - - %% Subgraphs for better organization - classDef success fill:#d4edda,stroke:#28a745,stroke-width:2px; - classDef failure fill:#f8d7da,stroke:#dc3545,stroke-width:2px; - class R success; - class S failure; - - %% Modify text color to black for specific nodes - style R fill:#d4edda,stroke:#28a745,stroke-width:2px,color:#000000 - style S fill:#f8d7da,stroke:#dc3545,stroke-width:2px,color:#000000 -``` +
+Made with โค๏ธ by PonderSource +
diff --git a/cypress/ocm-test-suite/cypress/e2e/share-with/nextcloud-v27-to-nextcloud-v28.cy.js b/cypress/ocm-test-suite/cypress/e2e/share-with/nextcloud-v27-to-nextcloud-v28.cy.js index d2adf7b0..4e50762f 100644 --- a/cypress/ocm-test-suite/cypress/e2e/share-with/nextcloud-v27-to-nextcloud-v28.cy.js +++ b/cypress/ocm-test-suite/cypress/e2e/share-with/nextcloud-v27-to-nextcloud-v28.cy.js @@ -13,8 +13,7 @@ import { } from '../utils/nextcloud-v27'; import { - acceptShareV28, - ensureFileExistsV28, + handleShareAcceptanceV28, } from '../utils/nextcloud-v28'; describe('Native Federated Sharing Functionality for Nextcloud', () => { @@ -60,14 +59,8 @@ describe('Native Federated Sharing Functionality for Nextcloud', () => { // Step 1: Log in to the recipient's Nextcloud instance cy.loginNextcloud(recipientUrl, recipientUsername, recipientPassword); - // Step 2: Wait for the share dialog to appear and accept the incoming federated share - acceptShareV28(); - - // Step 3: Reload the page to ensure the shared file appears in the file list - cy.reload(true); - - // Step 4: Verify the shared file is visible - ensureFileExistsV28(sharedFileName); + // Step 2: Handle any share acceptance pop-ups and verify the file exists + handleShareAcceptanceV28(sharedFileName); // TODO @MahdiBaghbani: Download or open the file to verify content (if required) }); diff --git a/cypress/ocm-test-suite/cypress/e2e/share-with/nextcloud-v28-to-nextcloud-v28.cy.js b/cypress/ocm-test-suite/cypress/e2e/share-with/nextcloud-v28-to-nextcloud-v28.cy.js index c5fa3607..bc47b065 100644 --- a/cypress/ocm-test-suite/cypress/e2e/share-with/nextcloud-v28-to-nextcloud-v28.cy.js +++ b/cypress/ocm-test-suite/cypress/e2e/share-with/nextcloud-v28-to-nextcloud-v28.cy.js @@ -7,10 +7,10 @@ */ import { - acceptShareV28, createShareV28, renameFileV28, ensureFileExistsV28, + handleShareAcceptanceV28, } from '../utils/nextcloud-v28'; describe('Native Federated Sharing Functionality for Nextcloud v28', () => { @@ -56,14 +56,8 @@ describe('Native Federated Sharing Functionality for Nextcloud v28', () => { // Step 1: Log in to the recipient's Nextcloud instance cy.loginNextcloud(recipientUrl, recipientUsername, recipientPassword); - // Step 2: Wait for the share dialog to appear and accept the incoming federated share - acceptShareV28(); - - // Step 3: Reload the page to ensure the shared file appears in the file list - cy.reload(true); - - // Step 4: Verify the shared file is visible - ensureFileExistsV28(sharedFileName); + // Step 2: Handle any share acceptance pop-ups and verify the file exists + handleShareAcceptanceV28(sharedFileName); // TODO @MahdiBaghbani: Download or open the file to verify content (if required) }); diff --git a/cypress/ocm-test-suite/cypress/e2e/share-with/ocmstub-v1-to-nextcloud-v28.cy.js b/cypress/ocm-test-suite/cypress/e2e/share-with/ocmstub-v1-to-nextcloud-v28.cy.js index 284740f8..053b550a 100644 --- a/cypress/ocm-test-suite/cypress/e2e/share-with/ocmstub-v1-to-nextcloud-v28.cy.js +++ b/cypress/ocm-test-suite/cypress/e2e/share-with/ocmstub-v1-to-nextcloud-v28.cy.js @@ -8,8 +8,7 @@ */ import { - acceptShareV28, - ensureFileExistsV28, + handleShareAcceptanceV28, } from '../utils/nextcloud-v28'; describe('Federated sharing functionality from OcmStub to Nextcloud', () => { @@ -44,14 +43,8 @@ describe('Federated sharing functionality from OcmStub to Nextcloud', () => { // Step 1: Log in to the recipient's Nextcloud instance cy.loginNextcloud(recipientUrl, recipientUsername, recipientPassword); - // Step 2: Wait for the share dialog to appear and accept the incoming federated share - acceptShareV28(); - - // Step 3: Reload the page to ensure the shared file appears in the file list - cy.reload(true); - - // Step 4: Verify the shared file is visible - ensureFileExistsV28(sharedFileName); + // Step 2: Handle any share acceptance pop-ups and verify the file exists + handleShareAcceptanceV28(sharedFileName); // TODO @MahdiBaghbani: Download or open the file to verify content (if required) }); diff --git a/cypress/ocm-test-suite/cypress/e2e/share-with/owncloud-v10-to-nextcloud-v28.cy.js b/cypress/ocm-test-suite/cypress/e2e/share-with/owncloud-v10-to-nextcloud-v28.cy.js index d9acfbe7..f82f6b81 100644 --- a/cypress/ocm-test-suite/cypress/e2e/share-with/owncloud-v10-to-nextcloud-v28.cy.js +++ b/cypress/ocm-test-suite/cypress/e2e/share-with/owncloud-v10-to-nextcloud-v28.cy.js @@ -7,8 +7,7 @@ */ import { - acceptShareV28, - ensureFileExistsV28, + handleShareAcceptanceV28, } from '../utils/nextcloud-v28'; import { @@ -60,14 +59,8 @@ describe('OCM federated sharing functionality for ownCloud', () => { // Step 1: Log in to the recipient's Nextcloud instance cy.loginNextcloud(recipientUrl, recipientUsername, recipientPassword); - // Step 2: Wait for the share dialog to appear and accept the incoming federated share - acceptShareV28(); - - // Step 3: Reload the page to ensure the shared file appears in the file list - cy.reload(true); - - // Step 4: Verify the shared file is visible - ensureFileExistsV28(sharedFileName); + // Step 2: Handle any share acceptance pop-ups and verify the file exists + handleShareAcceptanceV28(sharedFileName); // TODO @MahdiBaghbani: Download or open the file to verify content (if required) }); diff --git a/cypress/ocm-test-suite/cypress/e2e/utils/nextcloud-v27.js b/cypress/ocm-test-suite/cypress/e2e/utils/nextcloud-v27.js index 374a56a3..72fe0133 100644 --- a/cypress/ocm-test-suite/cypress/e2e/utils/nextcloud-v27.js +++ b/cypress/ocm-test-suite/cypress/e2e/utils/nextcloud-v27.js @@ -44,7 +44,6 @@ export function acceptShareV27() { // Wait for the share dialog to appear and ensure it's visible cy.get('div.oc-dialog', { timeout: 10000 }) .should('be.visible') - .first() .within(() => { // Locate the button row and click the primary button cy.get('div.oc-dialog-buttonrow') diff --git a/cypress/ocm-test-suite/cypress/e2e/utils/nextcloud-v28.js b/cypress/ocm-test-suite/cypress/e2e/utils/nextcloud-v28.js index 403e8c50..6c202490 100644 --- a/cypress/ocm-test-suite/cypress/e2e/utils/nextcloud-v28.js +++ b/cypress/ocm-test-suite/cypress/e2e/utils/nextcloud-v28.js @@ -44,7 +44,6 @@ export function acceptShareV28() { // Wait for the share dialog to appear and ensure it's visible cy.get('div.oc-dialog', { timeout: 10000 }) .should('be.visible') - .first() .within(() => { // Locate the button row and click the primary button cy.get('div.oc-dialog-buttonrow') @@ -54,6 +53,44 @@ export function acceptShareV28() { }); } +/** + * Handles multiple share acceptance pop-ups that may appear after reloads. + * This function recursively checks for and accepts share dialogs until none remain, + * then verifies the shared file exists. + * + * @param {string} fileName - The name of the shared file to verify exists. + * @param {number} [timeout=10000] - Optional timeout for the final file existence check. + */ +export function handleShareAcceptanceV28(fileName, timeout = 10000) { + // Wait for the page to be fully loaded + cy.wait(500); + + // Try to find the share dialog with a reasonable timeout + cy.get('body', { timeout: 10000 }).then($body => { + // Check if dialog exists and is visible + const hasDialog = $body.find('div.oc-dialog:visible').length > 0; + + if (hasDialog) { + // If dialog exists, accept it + acceptShareV28(); + // Wait a bit for the acceptance to be processed + cy.wait(500); + // Reload and continue checking + cy.reload(true).then(() => { + // Wait for page load after reload + cy.wait(500); + // Recursively check for more pop-ups + handleShareAcceptanceV28(fileName, timeout); + }); + } else { + // No more pop-ups, wait for the file list to be loaded + cy.wait(1000); + // Verify the shared file exists with specified timeout + ensureFileExistsV28(fileName, timeout); + } + }); +} + /** * Creates a share for a specific file and user. * @param {string} fileName - The name of the file to be shared. diff --git a/cypress/ocm-test-suite/cypress/e2e/utils/owncloud-v10.js b/cypress/ocm-test-suite/cypress/e2e/utils/owncloud-v10.js index 05514855..d0a6b378 100644 --- a/cypress/ocm-test-suite/cypress/e2e/utils/owncloud-v10.js +++ b/cypress/ocm-test-suite/cypress/e2e/utils/owncloud-v10.js @@ -44,7 +44,6 @@ export function acceptShare() { // Wait for the share dialog to appear and ensure it's visible cy.get('div.oc-dialog', { timeout: 10000 }) .should('be.visible') - .first() .within(() => { // Locate the button row and click the primary button cy.get('div.oc-dialog-buttonrow') @@ -327,13 +326,14 @@ export function openSharingPanel(fileName) { // Trigger the "Share" action for the specified file triggerActionForFile(fileName, 'Share'); - // Ensure the sharing tab is visible and click it + // Wait for the sharing panel to be fully loaded cy.get('#app-sidebar') .should('be.visible') .within(() => { cy.get('[data-tabid="shareTabView"]') .should('be.visible') - .click(); + .click() + .should('have.class', 'selected'); }); } @@ -401,14 +401,13 @@ export function triggerActionInFileMenu(fileName, actionId) { export function triggerActionForFile(fileName, actionId) { // Find the actions container for the file and click the desired action getActionsForFile(fileName) - .should('exist') - .and('be.visible') .within(() => { // Find the action button and ensure it's properly loaded cy.get(`*[data-action="${actionId}"]`) .should('exist') .and('be.visible') .and('not.be.disabled') + // Use { force: true } to handle cases where the element might be covered .click({ force: true }); }); } @@ -419,9 +418,13 @@ export function triggerActionForFile(fileName, actionId) { * @returns {Cypress.Chainable>} - The actions container element. */ export function getActionsForFile(fileName) { + // Wait for the file row to be stable before proceeding return getRowForFile(fileName) - .find('.fileactions') - .should('be.visible'); + .within(() => { + return cy.get('.fileactions') + .should('exist') + .and('be.visible'); + }); } /** @@ -430,5 +433,7 @@ export function getActionsForFile(fileName) { * @returns {Cypress.Chainable>} - The row element for the file. */ export function getRowForFile(fileName) { - return cy.get(`[data-file="${fileName}"]`).should('exist'); + return cy.get(`[data-file="${escapeCssSelector(fileName)}"]`) + .should('exist') + .and('be.visible'); } diff --git a/dev/ocm-test-suite/login/ocis.sh b/dev/ocm-test-suite/login/ocis.sh index 1efd7464..9e1386ed 100755 --- a/dev/ocm-test-suite/login/ocis.sh +++ b/dev/ocm-test-suite/login/ocis.sh @@ -131,6 +131,9 @@ main() { initialize_environment "../../.." setup "$@" + # Configure OCM providers for oCIS + prepare_ocis_environment "ocis1.docker,ocis1.docker,dav/" "ocis2.docker,ocis2.docker,dav/" + # Create EFSS containers # # id # image # tag create_ocis 1 owncloud/ocis "${EFSS_PLATFORM_1_VERSION}" diff --git a/docs/act.md b/docs/act.md deleted file mode 100644 index 4008a705..00000000 --- a/docs/act.md +++ /dev/null @@ -1,39 +0,0 @@ - -# Example commands - -```sh -# Command structure: -act [] [options] -If no event name passed, will default to "on: push" -If actions handles only one event it will be used as default instead of "on: push" - -# List all actions for all events: -act -l - -# List the actions for a specific event: -act workflow_dispatch -l - -# List the actions for a specific job: -act -j test -l - -# Run the default (`push`) event: -act - -# Run a specific event: -act pull_request - -# Run a specific job: -act -j test - -# Collect artifacts to the /tmp/artifacts folder: -act --artifact-server-path /tmp/artifacts - -# Run a job in a specific workflow (useful if you have duplicate job names) -act -j lint -W .github/workflows/checks.yml - -# Run in dry-run mode: -act -n - -# Enable verbose-logging (can be used with any of the above commands) -act -v -``` \ No newline at end of file diff --git a/docs/compatibility-matrix.md b/docs/compatibility-matrix.md new file mode 100644 index 00000000..1b25365e --- /dev/null +++ b/docs/compatibility-matrix.md @@ -0,0 +1,60 @@ +# OCM Compatibility Matrix ๐Ÿ”„ + +## Overview +This matrix displays the current compatibility status of various file sharing and collaboration features across different platforms. Each cell shows the real-time status of automated tests between different platform combinations. + +## Status Indicators ๐Ÿ“Š + +- **![Active](https://img.shields.io/badge/Active-2ea44f?style=flat-square)** - Test workflow exists and is actively maintained +- **![Planned](https://img.shields.io/badge/Planned-0969da?style=flat-square)** - Implementation is planned but not yet available +- **![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square)** - Combination is not supported due to technical limitations + +## Test Results Legend ๐ŸŽฏ + +Each test result badge indicates: +- โœ… **Green** - All tests passing +- โŒ **Red** - One or more tests failing +- ๐Ÿ•’ **Yellow** - Tests in progress or pending +- โšช **Gray** - Tests not recently run + +Click any badge to view detailed test results and logs in GitHub Actions. + +## Authentication Tests ๐Ÿ” + +Tests platform authentication mechanisms and user session management. + +| Platform | Nextcloud v27.1.11 | Nextcloud v28.0.14 | oCIS v5.0.9 | OcmStub v1.0.0 | ownCloud v10.15.0 | Seafile v11.0.5 | +|----------|-------------------|-------------------|-------------|----------------|------------------|----------------| +| **Status** | [![NC v27.1.11](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-nextcloud-v27.yml?branch=main&style=flat-square&label=Auth)](https://github.com/pondersource/dev-stock/actions/workflows/login-nextcloud-v27.yml) | [![NC v28.0.14](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-nextcloud-v28.yml?branch=main&style=flat-square&label=Auth)](https://github.com/pondersource/dev-stock/actions/workflows/login-nextcloud-v28.yml) | [![oCIS v5.0.9](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-ocis-v5.yml?branch=main&style=flat-square&label=Auth)](https://github.com/pondersource/dev-stock/actions/workflows/login-ocis-v5.yml) | [![OcmStub v1.0](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-ocmstub-v1.yml?branch=main&style=flat-square&label=Auth)](https://github.com/pondersource/dev-stock/actions/workflows/login-ocmstub-v1.yml) | [![OC v10.15.0](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-owncloud-v10.yml?branch=main&style=flat-square&label=Auth)](https://github.com/pondersource/dev-stock/actions/workflows/login-owncloud-v10.yml) | [![Seafile v11.0.5](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-seafile-v11.yml?branch=main&style=flat-square&label=Auth)](https://github.com/pondersource/dev-stock/actions/workflows/login-seafile-v11.yml) | + +## Public Link Sharing Tests ๐Ÿ”— + +Validates creation, management, and access of public share links across platforms. + +| Source Platform โžœ Target Platform | Nextcloud v27.1.11 | Nextcloud v28.0.14 | ownCloud v10.15.0 | +|----------------------------------|-------------------|-------------------|------------------| +| **Nextcloud v27.1.11** | [![NC27 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v27-nc-v27.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v27-nc-v27.yml) | [![NC27 โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v27-nc-v28.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v27-nc-v28.yml) | [![NC27 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v27-oc-v10.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v27-oc-v10.yml) | +| **Nextcloud v28.0.14** | [![NC28 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v28-nc-v27.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v28-nc-v27.yml) | [![NC28 โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v28-nc-v28.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v28-nc-v28.yml) | [![NC28 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v28-oc-v10.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v28-oc-v10.yml) | +| **ownCloud v10.15.0** | [![OC10 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-oc-v10-nc-v27.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-oc-v10-nc-v27.yml) | [![OC10 โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-oc-v10-nc-v28.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-oc-v10-nc-v28.yml) | [![OC10 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-oc-v10-oc-v10.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-oc-v10-oc-v10.yml) | + +## Direct User Sharing Tests ๐Ÿค + +Tests direct file and folder sharing capabilities between users across different platforms. + +| Source Platform โžœ Target Platform | Nextcloud v27.1.11 | Nextcloud v28.0.14 | OcmStub v1.0.0 | ownCloud v10.15.0 | Seafile v11.0.5 | +|----------------------------------|-------------------|-------------------|----------------|------------------|----------------| +| **Nextcloud v27.1.11** | [![NC27 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v27-nc-v27.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v27-nc-v27.yml) | [![NC27 โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v27-nc-v28.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v27-nc-v28.yml) | [![NC27 โžœ OS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v27-os-v1.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v27-os-v1.yml) | [![NC27 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v27-oc-v10.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v27-oc-v10.yml) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | +| **Nextcloud v28.0.14** | [![NC28 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v28-nc-v27.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v28-nc-v27.yml) | [![NC28 โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v28-nc-v28.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v28-nc-v28.yml) | [![NC28 โžœ OS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v28-os-v1.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v28-os-v1.yml) | [![NC28 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v28-oc-v10.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v28-oc-v10.yml) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | +| **OcmStub v1.0.0** | [![OS โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-os-v1-nc-v27.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-os-v1-nc-v27.yml) | [![OS โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-os-v1-nc-v28.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-os-v1-nc-v28.yml) | [![OS โžœ OS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-os-v1-os-v1.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-os-v1-os-v1.yml) | [![OS โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-os-v1-oc-v10.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-os-v1-oc-v10.yml) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | +| **ownCloud v10.15.0** | [![OC10 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-oc-v10-nc-v27.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-oc-v10-nc-v27.yml) | [![OC10 โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-oc-v10-nc-v28.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-oc-v10-nc-v28.yml) | [![OC10 โžœ OS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-oc-v10-os-v1.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-oc-v10-os-v1.yml) | [![OC10 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-oc-v10-oc-v10.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-oc-v10-oc-v10.yml) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | +| **Seafile v11.0.5** | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | [![SF โžœ SF](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-sf-v11-sf-v11.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-sf-v11-sf-v11.yml) | + +## ScienceMesh Federation Tests ๐ŸŒ + +Tests federated sharing capabilities between ScienceMesh-enabled platforms. + +| Source Platform โžœ Target Platform | Nextcloud v27.1.11 with ScienceMesh | oCIS v5.0.9 | ownCloud v10.15.0 with ScienceMesh | +|----------------------------------|-------------------------------------|-------------|-----------------------------------| +| **Nextcloud v27.1.11 with ScienceMesh** | [![NC27 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-nc-sm-v27-nc-sm-v27.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-nc-sm-v27-nc-sm-v27.yml) | [![NC27 โžœ oCIS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-nc-sm-v27-ocis-v5.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-nc-sm-v27-ocis-v5.yml) | [![NC27 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-nc-sm-v27-oc-sm-v10.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-nc-sm-v27-oc-sm-v10.yml) | +| **oCIS v5.0.9** | [![oCIS โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-ocis-v5-nc-sm-v27.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-ocis-v5-nc-sm-v27.yml) | [![oCIS โžœ oCIS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-ocis-v5-ocis-v5.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-ocis-v5-ocis-v5.yml) | [![oCIS โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-ocis-v5-oc-sm-v10.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-ocis-v5-oc-sm-v10.yml) | +| **ownCloud v10.15.0 with ScienceMesh** | [![OC10 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-oc-sm-v10-nc-sm-v27.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-oc-sm-v10-nc-sm-v27.yml) | [![OC10 โžœ oCIS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-oc-sm-v10-ocis-v5.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-oc-sm-v10-ocis-v5.yml) | [![OC10 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-oc-sm-v10-oc-sm-v10.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-oc-sm-v10-oc-sm-v10.yml) | \ No newline at end of file diff --git a/docs/docker-images.md b/docs/docker-images.md new file mode 100644 index 00000000..742d6376 --- /dev/null +++ b/docs/docker-images.md @@ -0,0 +1,135 @@ +# Docker Images Documentation + +This document provides detailed information about all Docker images available in the Development Stockpile project. + +## Table of Contents +- [Overview](#overview) +- [Platform Images](#platform-images) + - [Nextcloud Images](#nextcloud-images) + - [ownCloud Images](#owncloud-images) + - [OCM Stub Images](#ocm-stub-images) +- [Base Images](#base-images) +- [Building Custom Images](#building-custom-images) + +## Overview + +Development Stockpile provides a comprehensive set of Docker images for testing interoperability between different EFSS platforms. All images are available on Docker Hub under the `pondersource` organization. + +## Platform Images + +### Nextcloud Images + +#### Core Versions + +| Version | Docker Pull Command | Description | +|---------|-------------------|-------------| +| v30.0.2 | `docker pull pondersource/nextcloud:v30.0.2` | Latest stable Nextcloud version | +| v29.0.10 | `docker pull pondersource/nextcloud:v29.0.10` | Nextcloud 29 | +| v28.0.14 | `docker pull pondersource/nextcloud:v28.0.14` | Nextcloud 28 | +| v27.1.11 | `docker pull pondersource/nextcloud:v27.1.11` | Nextcloud 27 | + +#### ScienceMesh Variants + +| Version | Docker Pull Command | Description | +|---------|-------------------|-------------| +| v27.1.11-sm | `docker pull pondersource/nextcloud:v27.1.11-sm` | Nextcloud with ScienceMesh integration | + +#### Contacts App Variants + +| Version | Docker Pull Command | Contacts Version | +|---------|-------------------|-----------------| +| v30.0.2-contacts | `docker pull pondersource/nextcloud:v30.0.2-contacts` | v6.1.3 | +| v29.0.10-contacts | `docker pull pondersource/nextcloud:v29.0.10-contacts` | v6.0.2 | +| v28.0.14-contacts | `docker pull pondersource/nextcloud:v28.0.14-contacts` | v5.5.3 | +| v27.1.11-contacts | `docker pull pondersource/nextcloud:v27.1.11-contacts` | v5.5.3 | + +#### Features +- Pre-configured OCM app +- ScienceMesh integration support +- Contacts app integration +- Xdebug support for development +- Custom apps and configurations + +### ownCloud Images + +#### Core Versions + +| Version | Docker Pull Command | Description | +|---------|-------------------|-------------| +| v10.15.0 | `docker pull pondersource/owncloud:v10.15.0` | Latest stable ownCloud version | + +#### ScienceMesh Variants + +| Version | Docker Pull Command | Description | +|---------|-------------------|-------------| +| v10.15.0-sm | `docker pull pondersource/owncloud:v10.15.0-sm` | ownCloud with ScienceMesh integration | + +#### Features +- OCM integration +- ScienceMesh integration support +- Custom apps support +- Preconfigured sharing settings +- Debug mode support + +### OCM Stub Images + +| Version | Docker Pull Command | Description | +|---------|-------------------|-------------| +| v1.0.0 | `docker pull pondersource/ocmstub:v1.0.0` | Latest OCM Stub version | +| latest | `docker pull pondersource/ocmstub:latest` | Development version | + +#### Features +- Lightweight OCM implementation +- Testing-focused configuration +- Mock OCM endpoints +- Configurable behavior + +## Base Images + +We provide base images that serve as foundations for platform-specific images: + +| Image | Description | +|-------|-------------| +| `pondersource/nextcloud-base` | Base image for Nextcloud | +| `pondersource/owncloud-base` | Base image for ownCloud | + +## Building Custom Images + +### Prerequisites +- Docker installed +- Access to source repositories + +### Build Commands + +1. Build all images: +```bash +./docker/build/all.sh +``` + +2. Build specific variants: +```bash +# Build Nextcloud with ScienceMesh +./docker/build/all.sh nextcloud-sciencemesh + +# Build Nextcloud with Contacts +./docker/build/all.sh nextcloud-contacts + +# Build ownCloud with ScienceMesh +./docker/build/all.sh owncloud-sciencemesh +``` + +### Customization + +You can customize images by modifying: +- `docker/configs/`: Platform configurations +- `docker/dockerfiles/`: Dockerfile definitions +- `docker/scripts/`: Build and initialization scripts + +### Environment Variables + +The build process supports several environment variables: + +- `DOCKER_BUILDKIT`: Enable/disable BuildKit (default: 1) +- `CACHEBUST`: Force rebuild of specific layers +- `NEXTCLOUD_VERSION`: Specify Nextcloud version +- `OWNCLOUD_VERSION`: Specify ownCloud version diff --git a/docs/guides/act.md b/docs/guides/act.md new file mode 100644 index 00000000..37a096aa --- /dev/null +++ b/docs/guides/act.md @@ -0,0 +1,171 @@ +# Local GitHub Actions with Act ๐Ÿš€ + +[Act](https://github.com/nektos/act) allows you to run your GitHub Actions locally. This is incredibly useful for testing and debugging your workflows before pushing them to GitHub. + +## Table of Contents +- [Basic Usage](#basic-usage) +- [Common Commands](#common-commands) +- [Advanced Usage](#advanced-usage) +- [Environment Configuration](#environment-configuration) +- [Troubleshooting](#troubleshooting) + +## Basic Usage + +Act runs your GitHub Actions workflows locally by spinning up Docker containers that match GitHub's runner environments. + +### Command Structure +```bash +act [] [options] +``` +- If no event is specified, defaults to "on: push" +- If the workflow only handles one event, that event becomes the default + +### Quick Start Examples +```bash +# List all available actions +act -l + +# Run the default push event +act + +# Run with verbose output +act -v + +# Dry run (prints the actions without executing) +act -n +``` + +## Common Commands + +### Event-Based Execution +```bash +# Run pull request event +act pull_request + +# Run workflow dispatch event +act workflow_dispatch + +# Run release event +act release +``` + +### Job-Specific Execution +```bash +# Run a specific job by name +act -j build + +# Run a job from a specific workflow file +act -j test -W .github/workflows/test.yml + +# List jobs for a specific event +act pull_request -l +``` + +### Artifact Management +```bash +# Collect artifacts to a specific directory +act --artifact-server-path /tmp/artifacts + +# Use a custom artifacts directory with a specific job +act -j build --artifact-server-path ./my-artifacts +``` + +## Advanced Usage + +### Platform Selection +```bash +# Use Ubuntu latest +act -P ubuntu-latest=node:16-buster + +# Use custom platform image +act -P custom=myorg/myimage:latest +``` + +### Secret Management +```bash +# Run with secrets file +act --secret-file my.secrets + +# Pass individual secrets +act -s MY_SECRET=value + +# Use .env file +act --env-file .env +``` + +### Working Directory +```bash +# Run from a specific directory +act -C /path/to/repo + +# Use custom event payload +act pull_request -e event.json +``` + +## Environment Configuration + +### Runner Images +Act supports different runner images to match GitHub's environments: + +- **Micro**: ~300MB, sufficient for basic actions +- **Medium**: ~1.2GB, includes more tools +- **Large**: ~3.5GB, closest to GitHub-hosted runners + +```bash +# Use micro runner +act -P micro + +# Use large runner +act -P large +``` + +### Configuration File +Create `.actrc` in your home or project directory: +```bash +# Example .actrc +-P ubuntu-latest=node:16-buster +-P ubuntu-18.04=node:16-buster +--secret-file my.secrets +``` + +## Troubleshooting + +### Common Issues + +1. **Docker Not Running** + ```bash + # Check Docker status + docker info + ``` + +2. **Permission Issues** + ```bash + # Run with sudo if needed + sudo act + ``` + +3. **Resource Limits** + ```bash + # Increase container memory + act --container-options "-m 4G" + ``` + +### Debug Mode +```bash +# Enable debug logging +act -v + +# Maximum verbosity +act -v -v +``` + +### Cleanup +```bash +# Remove act containers +docker rm $(docker ps -a -q --filter "name=act-*") + +# Remove act images +docker rmi $(docker images -q --filter "reference=node:*-buster") +``` + +For more information and updates, visit the [official Act repository](https://github.com/nektos/act). diff --git a/docs/guides/getting-started.md b/docs/guides/getting-started.md new file mode 100644 index 00000000..c43e7524 --- /dev/null +++ b/docs/guides/getting-started.md @@ -0,0 +1,141 @@ +# Getting Started Guide + +This guide will help you get started with Development Stockpile for EFSS development and testing. + +## Table of Contents +- [Prerequisites](#prerequisites) +- [Installation](#installation) +- [Basic Usage](#basic-usage) +- [Development Environment](#development-environment) +- [Next Steps](#next-steps) + +## Prerequisites + +Before you begin, ensure you have the following installed: + +### Required Software +- Docker Engine (20.10.0 or higher) +- Docker Compose (2.0.0 or higher) +- Git + +### System Requirements +- At least 4GB of RAM +- 20GB of free disk space +- Internet connection for pulling Docker images + +### Optional Tools +- Visual Studio Code with Docker extension +- Act for local GitHub Actions testing +- Xdebug for PHP debugging + +## Installation + +1. Clone the repository: +```bash +git clone https://github.com/pondersource/dev-stock.git +cd dev-stock +``` + +2. Pull required Docker images: +```bash +./docker/pull/all.sh +``` + +3. Install Node.js dependencies: +```bash +npm install +``` + +4. Copy and configure environment variables: +```bash +cp .env.example .env +# Edit .env with your preferred settings +``` + +## Basic Usage + +### Running Tests + +The OCM Test Suite supports various test scenarios. Before running any tests, please check our [Platform Compatibility Matrix](../compatibility-matrix.md) to ensure your target platforms and versions are compatible with the feature you want to test. + +1. Login Tests: +```bash +./dev/ocm-test-suite.sh login nextcloud v30.0.2 dev chrome +``` + +2. Share Link Tests: +```bash +./dev/ocm-test-suite.sh share-link nextcloud v30.0.2 dev chrome owncloud v10.15.0 +``` + +3. Share With Tests: +```bash +./dev/ocm-test-suite.sh share-with nextcloud v30.0.2 dev chrome nextcloud v30.0.2 +``` + +4. Invite Link Tests: +```bash +./dev/ocm-test-suite.sh invite-link nextcloud-sm v27.1.11-sm ci chrome owncloud-sm v10.15.0-sm +``` + +### Test Command Structure +```bash +./dev/ocm-test-suite.sh [platform2] [version2] +``` + +- `category`: login, share-link, share-with, or invite-link +- `platform1`: nextcloud, owncloud, ocmstub, seafile, or ocis +- `version1`: platform version (e.g., v30.0.2) +- `mode`: dev or ci +- `browser`: chrome or firefox +- `platform2`: (optional) second platform for cross-platform tests +- `version2`: (optional) version of the second platform + +## Development Environment + +### Directory Structure +``` +dev-stock/ +โ”œโ”€โ”€ cypress/ # Test suites and configurations +โ”œโ”€โ”€ docker/ # Docker configurations and images +โ”‚ โ”œโ”€โ”€ build/ # Image build scripts +โ”‚ โ”œโ”€โ”€ configs/ # Platform configurations +โ”‚ โ”œโ”€โ”€ pull/ # Image pull scripts +โ”‚ โ””โ”€โ”€ scripts/ # Utility scripts +โ”œโ”€โ”€ docs/ # Documentation +โ”œโ”€โ”€ .github/ # GitHub Actions workflows +โ””โ”€โ”€ dev/ # Development scripts +``` + +### Common Development Tasks + +1. Building custom images: +```bash +./docker/build/all.sh +``` + +2. Cleaning previous test data and docker containers: +```bash +./scripts/clean.sh +``` + +## Next Steps + +After getting started, you might want to: + +1. Learn about [Docker Images](../docker-images.md) +2. Explore the [OCM Test Suite](../testing/test-suite.md) +3. Set up [Xdebug](../xdebug.md) for debugging +4. Configure [GitHub Actions](./act.md) for CI/CD + +## Support + +If you encounter any issues: +1. Check the logs using `docker logs ` +2. Review test screenshots in `cypress/screenshots` +3. Search existing GitHub issues +4. Create a new issue with detailed reproduction steps + +## Contributing + +We welcome contributions! Please see our [Contributing Guide](../../CONTRIBUTING.md) for details. diff --git a/docs/testing/test-suite.md b/docs/testing/test-suite.md new file mode 100644 index 00000000..2dbbaa09 --- /dev/null +++ b/docs/testing/test-suite.md @@ -0,0 +1,153 @@ +# OCM Test Suite Documentation + +This document provides detailed information about the OCM Test Suite available in the Development Stockpile project. + +## Table of Contents +- [Overview](#overview) +- [Test Categories](#test-categories) +- [Running Tests](#running-tests) +- [Test Configuration](#test-configuration) +- [CI/CD Integration](#cicd-integration) +- [Troubleshooting](#troubleshooting) + +## Overview + +The OCM Test Suite is designed to validate interoperability between different EFSS platforms implementing the OCM standard. It provides comprehensive testing for various sharing scenarios and authentication mechanisms. + +For detailed information about which platforms and versions can interoperate with each other, please refer to our [Platform Compatibility Matrix](../compatibility-matrix.md). + +### Supported Platforms +- Nextcloud (v27.x, v28.x, v30.x) +- ownCloud (v10.x) +- OCM Stub (v1.x) +- Seafile (v11.x) +- OCIS (v5.x) + +### Test Infrastructure +- Cypress for end-to-end testing +- Docker for containerized environments +- GitHub Actions for CI/CD +- Custom test runners and utilities + +## Test Categories + +Before running any tests, please check the [Platform Compatibility Matrix](../compatibility-matrix.md) to ensure your target platforms and versions are compatible with the feature you want to test. + +### Login Tests + +Verify authentication mechanisms across platforms. + +```bash +./dev/ocm-test-suite.sh login nextcloud v30.0.2 ci chrome +``` + +#### What's Being Tested +- User authentication flow +- Session management +- Error handling for invalid credentials +- Two-factor authentication (if configured) +- Token-based authentication + +### Share Link Tests + +Test public link sharing capabilities between platforms. + +```bash +./dev/ocm-test-suite.sh share-link nextcloud v30.0.2 ci chrome owncloud v10.15.0 +``` + +#### What's Being Tested +- Link creation and validation +- Cross-platform link access + +### Share With Tests + +Validate direct file sharing between users on different platforms. + +```bash +./dev/ocm-test-suite.sh share-with nextcloud v30.0.2 ci chrome nextcloud v30.0.2 +``` + +#### What's Being Tested +- User-to-user sharing +- Group sharing +- Share acceptance/rejection +- Notification delivery + +### Invite Link Tests + +Test user invitation workflows between platforms. + +```bash +./dev/ocm-test-suite.sh invite-link nextcloud-sm v27.1.11-sm ci chrome owncloud-sm v10.15.0-sm +``` + +#### What's Being Tested +- Invitation creation and validation +- Invitation acceptance flow +- User provisioning process +- Cross-platform user linking + +## Running Tests + +### Prerequisites +- Docker and Docker Compose installed +- Required Docker images pulled + +### Test Environment Setup + +1. Pull required images: +```bash +./docker/pull/all.sh +``` + +### Test Command Structure + +```bash +./dev/ocm-test-suite.sh [platform2] [version2] +``` + +Parameters: +- `category`: Test category (login, share-link, share-with, invite-link) +- `platform1`: First platform (nextcloud, owncloud, ocmstub, seafile, ocis) +- `version1`: Version of first platform +- `mode`: Test mode (dev/ci) +- `browser`: Browser for testing (chrome/firefox) +- `platform2`: (optional) Second platform for cross-platform tests +- `version2`: (optional) Version of second platform + +## Test Configuration + + +### Configuration Files + +- `cypress.config.js`: Cypress configuration + +## CI/CD Integration + +### GitHub Actions + +1. Workflow files are in `.github/workflows/` +2. Each workflow tests specific platform combinations +3. Tests run on pull requests and main branch + +## Troubleshooting + +### Common Issues + +1. **Container Startup Issues** + ```bash + # Check container logs + docker logs + ``` + +2. **Network Problems** + ```bash + # Verify network connectivity + docker network inspect testnet + ``` + +3. **Test Failures** + - Check Cypress screenshots: `cypress/screenshots/` + - Review test videos: `cypress/videos/` + - Check test logs: `cypress/logs/` diff --git a/site/config.toml b/site/config.toml new file mode 100644 index 00000000..3d3d6ee4 --- /dev/null +++ b/site/config.toml @@ -0,0 +1,22 @@ +base_url = "https://pondersource.github.io/dev-stock" +title = "OCM Compatibility Matrix" +description = "Compatibility status of various file sharing and collaboration features across different platforms" +theme = "" + +# Whether to automatically compile all Sass files in the sass directory +compile_sass = true + +# Whether to generate a feed file for your site +generate_feed = false + +# Whether to build a search index to be used later on by a JavaScript library +build_search_index = false + +[markdown] +# Whether to do syntax highlighting +# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola +highlight_code = true +highlight_theme = "dracula" + +[extra] +# Put all your custom variables here \ No newline at end of file diff --git a/site/content/_index.md b/site/content/_index.md new file mode 100644 index 00000000..22fb7335 --- /dev/null +++ b/site/content/_index.md @@ -0,0 +1,65 @@ ++++ +title = "OCM Compatibility Matrix" +template = "matrix.html" ++++ + +# OCM Compatibility Matrix ๐Ÿ”„ + +## Overview +This matrix displays the current compatibility status of various file sharing and collaboration features across different platforms. Each cell shows the real-time status of automated tests between different platform combinations. + +## Status Indicators ๐Ÿ“Š + +- **![Active](https://img.shields.io/badge/Active-2ea44f?style=flat-square)** - Test workflow exists and is actively maintained +- **![Planned](https://img.shields.io/badge/Planned-0969da?style=flat-square)** - Implementation is planned but not yet available +- **![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square)** - Combination is not supported due to technical limitations + +## Test Results Legend ๐ŸŽฏ + +Each test result badge indicates: +- โœ… **Green** - All tests passing +- โŒ **Red** - One or more tests failing +- ๐Ÿ•’ **Yellow** - Tests in progress or pending +- โšช **Gray** - Tests not recently run + +Click any badge to view detailed test results and logs in GitHub Actions. Hover over the badge to see available test artifacts for download. + +## Authentication Tests ๐Ÿ” + +Tests platform authentication mechanisms and user session management. + +| Platform | Nextcloud v27.1.11 | Nextcloud v28.0.14 | oCIS v5.0.9 | OcmStub v1.0.0 | ownCloud v10.15.0 | Seafile v11.0.5 | +|----------|-------------------|-------------------|-------------|----------------|------------------|----------------| +| **Status** | [![NC v27.1.11](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-nextcloud-v27.yml?branch=main&style=flat-square&label=Auth)](https://github.com/pondersource/dev-stock/actions/workflows/login-nextcloud-v27.yml) | [![NC v28.0.14](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-nextcloud-v28.yml?branch=main&style=flat-square&label=Auth)](https://github.com/pondersource/dev-stock/actions/workflows/login-nextcloud-v28.yml) | [![oCIS v5.0.9](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-ocis-v5.yml?branch=main&style=flat-square&label=Auth)](https://github.com/pondersource/dev-stock/actions/workflows/login-ocis-v5.yml) | [![OcmStub v1.0](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-ocmstub-v1.yml?branch=main&style=flat-square&label=Auth)](https://github.com/pondersource/dev-stock/actions/workflows/login-ocmstub-v1.yml) | [![OC v10.15.0](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-owncloud-v10.yml?branch=main&style=flat-square&label=Auth)](https://github.com/pondersource/dev-stock/actions/workflows/login-owncloud-v10.yml) | [![Seafile v11.0.5](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/login-seafile-v11.yml?branch=main&style=flat-square&label=Auth)](https://github.com/pondersource/dev-stock/actions/workflows/login-seafile-v11.yml) | + +## Public Link Sharing Tests ๐Ÿ”— + +Validates creation, management, and access of public share links across platforms. + +| Source Platform โžœ Target Platform | Nextcloud v27.1.11 | Nextcloud v28.0.14 | ownCloud v10.15.0 | +|----------------------------------|-------------------|-------------------|------------------| +| **Nextcloud v27.1.11** | [![NC27 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v27-nc-v27.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v27-nc-v27.yml) | [![NC27 โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v27-nc-v28.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v27-nc-v28.yml) | [![NC27 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v27-oc-v10.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v27-oc-v10.yml) | +| **Nextcloud v28.0.14** | [![NC28 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v28-nc-v27.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v28-nc-v27.yml) | [![NC28 โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v28-nc-v28.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v28-nc-v28.yml) | [![NC28 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-nc-v28-oc-v10.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-nc-v28-oc-v10.yml) | +| **ownCloud v10.15.0** | [![OC10 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-oc-v10-nc-v27.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-oc-v10-nc-v27.yml) | [![OC10 โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-oc-v10-nc-v28.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-oc-v10-nc-v28.yml) | [![OC10 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-link-oc-v10-oc-v10.yml?branch=main&style=flat-square&label=Link)](https://github.com/pondersource/dev-stock/actions/workflows/share-link-oc-v10-oc-v10.yml) | + +## Direct User Sharing Tests ๐Ÿค + +Tests direct file and folder sharing capabilities between users across different platforms. + +| Source Platform โžœ Target Platform | Nextcloud v27.1.11 | Nextcloud v28.0.14 | OcmStub v1.0.0 | ownCloud v10.15.0 | Seafile v11.0.5 | +|----------------------------------|-------------------|-------------------|----------------|------------------|----------------| +| **Nextcloud v27.1.11** | [![NC27 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v27-nc-v27.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v27-nc-v27.yml) | [![NC27 โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v27-nc-v28.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v27-nc-v28.yml) | [![NC27 โžœ OS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v27-os-v1.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v27-os-v1.yml) | [![NC27 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v27-oc-v10.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v27-oc-v10.yml) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | +| **Nextcloud v28.0.14** | [![NC28 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v28-nc-v27.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v28-nc-v27.yml) | [![NC28 โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v28-nc-v28.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v28-nc-v28.yml) | [![NC28 โžœ OS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v28-os-v1.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v28-os-v1.yml) | [![NC28 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-nc-v28-oc-v10.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-nc-v28-oc-v10.yml) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | +| **OcmStub v1.0.0** | [![OS โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-os-v1-nc-v27.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-os-v1-nc-v27.yml) | [![OS โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-os-v1-nc-v28.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-os-v1-nc-v28.yml) | [![OS โžœ OS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-os-v1-os-v1.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-os-v1-os-v1.yml) | [![OS โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-os-v1-oc-v10.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-os-v1-oc-v10.yml) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | +| **ownCloud v10.15.0** | [![OC10 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-oc-v10-nc-v27.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-oc-v10-nc-v27.yml) | [![OC10 โžœ NC28](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-oc-v10-nc-v28.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-oc-v10-nc-v28.yml) | [![OC10 โžœ OS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-oc-v10-os-v1.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-oc-v10-os-v1.yml) | [![OC10 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-oc-v10-oc-v10.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-oc-v10-oc-v10.yml) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | +| **Seafile v11.0.5** | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | ![Unsupported](https://img.shields.io/badge/Unsupported-red?style=flat-square) | [![SF โžœ SF](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/share-with-sf-v11-sf-v11.yml?branch=main&style=flat-square&label=Share)](https://github.com/pondersource/dev-stock/actions/workflows/share-with-sf-v11-sf-v11.yml) | + +## ScienceMesh Federation Tests ๐ŸŒ + +Tests federated sharing capabilities between ScienceMesh-enabled platforms. + +| Source Platform โžœ Target Platform | Nextcloud v27.1.11 with ScienceMesh | oCIS v5.0.9 | ownCloud v10.15.0 with ScienceMesh | +|----------------------------------|-------------------------------------|-------------|-----------------------------------| +| **Nextcloud v27.1.11 with ScienceMesh** | [![NC27 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-nc-sm-v27-nc-sm-v27.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-nc-sm-v27-nc-sm-v27.yml) | [![NC27 โžœ oCIS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-nc-sm-v27-ocis-v5.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-nc-sm-v27-ocis-v5.yml) | [![NC27 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-nc-sm-v27-oc-sm-v10.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-nc-sm-v27-oc-sm-v10.yml) | +| **oCIS v5.0.9** | [![oCIS โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-ocis-v5-nc-sm-v27.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-ocis-v5-nc-sm-v27.yml) | [![oCIS โžœ oCIS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-ocis-v5-ocis-v5.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-ocis-v5-ocis-v5.yml) | [![oCIS โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-ocis-v5-oc-sm-v10.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-ocis-v5-oc-sm-v10.yml) | +| **ownCloud v10.15.0 with ScienceMesh** | [![OC10 โžœ NC27](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-oc-sm-v10-nc-sm-v27.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-oc-sm-v10-nc-sm-v27.yml) | [![OC10 โžœ oCIS](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-oc-sm-v10-ocis-v5.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-oc-sm-v10-ocis-v5.yml) | [![OC10 โžœ OC10](https://img.shields.io/github/actions/workflow/status/pondersource/dev-stock/invite-link-oc-sm-v10-oc-sm-v10.yml?branch=main&style=flat-square&label=ScienceMesh)](https://github.com/pondersource/dev-stock/actions/workflows/invite-link-oc-sm-v10-oc-sm-v10.yml) | \ No newline at end of file diff --git a/site/sass/main.scss b/site/sass/main.scss new file mode 100644 index 00000000..770d7512 --- /dev/null +++ b/site/sass/main.scss @@ -0,0 +1,107 @@ +// Variables +$primary-color: #2ea44f; +$secondary-color: #0969da; +$text-color: #24292f; +$background-color: #ffffff; +$border-color: #d0d7de; + +// Base styles +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; + line-height: 1.6; + color: $text-color; + background-color: $background-color; + margin: 0; + padding: 0; +} + +header { + background-color: #f6f8fa; + border-bottom: 1px solid $border-color; + padding: 1rem; + + nav { + max-width: 1200px; + margin: 0 auto; + + a { + color: $text-color; + text-decoration: none; + font-weight: 600; + + &:hover { + color: $primary-color; + } + } + } +} + +main { + max-width: 1200px; + margin: 2rem auto; + padding: 0 1rem; +} + +// Matrix specific styles +.matrix-container { + overflow-x: auto; + + table { + border-collapse: collapse; + width: 100%; + margin: 1rem 0; + + th, td { + border: 1px solid $border-color; + padding: 0.5rem; + text-align: center; + } + + th { + background-color: #f6f8fa; + } + } +} + +.badge-wrapper { + position: relative; + display: inline-block; + + &:hover .artifacts-list { + display: block; + } +} + +.artifacts-list { + display: none; + position: absolute; + background: white; + border: 1px solid $border-color; + border-radius: 6px; + padding: 0.5rem; + z-index: 1000; + box-shadow: 0 1px 3px rgba(0,0,0,0.1); + + a { + display: block; + color: $secondary-color; + text-decoration: none; + padding: 0.25rem 0.5rem; + + &:hover { + background-color: #f6f8fa; + } + } +} + +footer { + text-align: center; + padding: 2rem; + background-color: #f6f8fa; + border-top: 1px solid $border-color; + + p { + margin: 0; + color: #57606a; + } +} \ No newline at end of file diff --git a/site/templates/base.html b/site/templates/base.html new file mode 100644 index 00000000..efc545b1 --- /dev/null +++ b/site/templates/base.html @@ -0,0 +1,22 @@ + + + + + + {% block title %}{{ config.title }}{% endblock title %} + + + +
+ +
+
+ {% block content %}{% endblock content %} +
+
+

ยฉ {{ now() | date(format="%Y") }} PonderSource. All rights reserved.

+
+ + \ No newline at end of file diff --git a/site/templates/matrix.html b/site/templates/matrix.html new file mode 100644 index 00000000..13e8ad11 --- /dev/null +++ b/site/templates/matrix.html @@ -0,0 +1,58 @@ +{% extends "base.html" %} + +{% block content %} +
+

{{ page.title }}

+ {{ page.content | safe }} + + +
+{% endblock content %} \ No newline at end of file