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 %}
+
+
+
+
\ 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