mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat: expand alternatives comparisons (#384)
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { ALTERNATIVES } from "../../../apps/landing/src/data/alternatives.js";
|
||||
|
||||
const addedCompetitors = [
|
||||
"tinywow",
|
||||
"adobe-acrobat-online",
|
||||
"freeconvert",
|
||||
"convertio",
|
||||
"online-convert",
|
||||
];
|
||||
|
||||
describe("landing alternatives data", () => {
|
||||
it("includes the expanded hosted-tool competitors", () => {
|
||||
const slugs = ALTERNATIVES.map((alternative) => alternative.slug);
|
||||
|
||||
expect(slugs).toEqual(expect.arrayContaining(addedCompetitors));
|
||||
});
|
||||
|
||||
it("keeps every comparison reviewable with dates and sources", () => {
|
||||
for (const alternative of ALTERNATIVES) {
|
||||
expect(alternative.lastReviewed).toMatch(/^\d{4}-\d{2}-\d{2}$/);
|
||||
expect(alternative.sources.length).toBeGreaterThanOrEqual(1);
|
||||
expect(alternative.sources.every((source) => source.url.startsWith("https://"))).toBe(true);
|
||||
}
|
||||
});
|
||||
|
||||
it("frames TinyWow as a broad hosted toolbox, not a narrow single-tool product", () => {
|
||||
const tinywow = ALTERNATIVES.find((alternative) => alternative.slug === "tinywow");
|
||||
|
||||
expect(tinywow?.category).toBe("Hosted online toolbox");
|
||||
expect(tinywow?.intro).toContain("broad hosted toolbox");
|
||||
expect(tinywow?.rows.some((row) => row.competitor.includes("PDF, image, video"))).toBe(true);
|
||||
});
|
||||
|
||||
it("avoids brittle absolute negatives for hosted competitors", () => {
|
||||
const hostedAlternatives = ALTERNATIVES.filter(
|
||||
(alternative) => !alternative.competitorOpenSource,
|
||||
);
|
||||
|
||||
for (const alternative of hostedAlternatives) {
|
||||
const competitorCells = alternative.rows.map((row) => row.competitor);
|
||||
|
||||
expect(competitorCells).not.toContain("No");
|
||||
expect(competitorCells).not.toContain("PDF only");
|
||||
expect(competitorCells).not.toContain("Conversion only");
|
||||
expect(competitorCells).not.toContain("Image compression only");
|
||||
expect(competitorCells).not.toContain("API on paid plans");
|
||||
expect(competitorCells).not.toContain("Capped by plan");
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user