first commit

This commit is contained in:
2025-04-04 08:46:42 +02:00
commit 037db50101
9 changed files with 169 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
.idea
.DS_Store

18
action.yml Normal file
View File

@@ -0,0 +1,18 @@
name: Docker build push !
description: A custom docker build push
author: Skydust
# Define your inputs here.
inputs:
imageName:
description: The image name
required: true
imagePrefix:
description: The image prefix
required: false
default: ${{ gitea.server_url }}/${{ gitea.repository_owner }}/
runs:
using: docker
image: "docker.io/cypress/base:22.13.1"
entrypoint: "/entrypoint.sh"

18
e2e/cypress.config.mjs Normal file
View File

@@ -0,0 +1,18 @@
import { defineConfig } from "cypress";
import { initPlugin } from "cypress-plugin-snapshots/plugin";
export default defineConfig({
e2e: {
baseUrl: "http://127.0.0.1:5173/",
screenshotOnRunFailure: true, // Capture screenshots on test failure
setupNodeEvents(on, config) {
initPlugin(on, config);
return config;
},
excludeSpecPattern: [
"**/__snapshots__/*",
"**/__image_snapshots__/*"
]
},
screenshotsFolder: "cypress/screenshots"
});

View File

@@ -0,0 +1,33 @@
describe("full page screenshot", () => {
const takeFullPageScreenshots = () => {
cy.visit("/");
cy.wait(500);
cy.window().toMatchImageSnapshot("first", {
threshold: 0.8
});
cy.wait(400);
cy.window().toMatchImageSnapshot("second", {
threshold: 0.8
});
};
it("Normal screen", () => {
cy.viewport(1280, 720);
takeFullPageScreenshots();
});
it("Old puter screen", () => {
cy.viewport(800, 600);
takeFullPageScreenshots();
});
it("iPhone8", () => {
cy.viewport("iphone-8");
takeFullPageScreenshots();
});
it("iPad2", () => {
cy.viewport("ipad-2");
takeFullPageScreenshots();
});
});

View File

@@ -0,0 +1,51 @@
import "cypress-plugin-snapshots/commands";
declare global {
namespace Cypress {
interface MatchSnapshotOptions {
/** Custom name for the snapshot */
name?: string;
/** Save snapshot as JSON instead of plain text */
json?: boolean;
/** Timeout in milliseconds */
timeout?: number;
}
interface MatchImageSnapshotOptions {
/** Custom name for the image snapshot */
name?: string;
/** Mismatch threshold for considering images different */
threshold?: number;
/** Type of threshold comparison */
thresholdType?: "pixel" | "percent";
/** Direction of the difference detection */
diffDirection?: "horizontal" | "vertical";
/** Allow different image sizes */
allowSizeMismatch?: boolean;
/** Custom configuration for pixelmatch */
customDiffConfig?: Record<string, unknown>;
/** Path to custom snapshots directory */
customSnapshotsDir?: string;
/** Path to custom diffs directory */
customDiffDir?: string;
/** Capture mode */
capture?: "viewport" | "fullPage" | "runner";
}
interface Chainable {
/**
* Take a text-based snapshot and compare with a baseline
* @param name - Name of the snapshot (optional)
* @param options - Snapshot options
*/
toMatchSnapshot(name?: string, options?: MatchSnapshotOptions): Chainable;
/**
* Take an image snapshot and compare with a baseline
* @param name - Name of the snapshot (optional)
* @param options - Image snapshot options
*/
toMatchImageSnapshot(name?: string, options?: MatchImageSnapshotOptions): Chainable;
}
}
}

View File

@@ -0,0 +1 @@
import "./commands";

View File

@@ -0,0 +1,9 @@
{
"compilerOptions": {
"target": "es5",
"lib": ["es5", "dom"],
"sourceMap": true,
"types": ["cypress", "node"]
},
"include": ["**/*.ts"]
}

16
e2e/package.json Normal file
View File

@@ -0,0 +1,16 @@
{
"name": "cypress-e2e",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"cy:open": "cypress open --e2e",
"cy:test": "cypress run --e2e -b firefox"
},
"devDependencies": {
"cypress": "^14.2.1",
"cypress-plugin-snapshots": "^1.4.4",
"typescript": "~5.8.0"
},
"packageManager": "pnpm@10.2.1+sha512.398035c7bd696d0ba0b10a688ed558285329d27ea994804a52bad9167d8e3a72bcb993f9699585d3ca25779ac64949ef422757a6c31102c12ab932e5cbe5cc92"
}

21
entrypoint.sh Normal file
View File

@@ -0,0 +1,21 @@
#!/usr/bin/env bash
INPUT_IMAGE_NAME=$imageName
INPUT_IMAGE_PREFIX=$imagePrefix
set -e
npm config set @skydust:registry=https://gitea.skydust.fr/api/packages/skydust/npm/
npm install -g @skydust/toolkit@1.2.3
apt-get update
apt-get install --yes firefox-esr
ACTION_PATH="${GITHUB_ACTION_PATH}/e2e"
cd "${ACTION_PATH}"
npx cypress install
npm run cy:test
mkdir -p "${GITHUB_WORKSPACE}/artifacts"
cp -r "${ACTION_PATH}/e2e/cypress/e2e/__image_snapshots__/" "${GITHUB_WORKSPACE}/artifacts/"