From 9fae5ebb33d85ccda92ca965d17c833e4fadd507 Mon Sep 17 00:00:00 2001 From: xphoniex Date: Mon, 30 Jan 2023 13:29:40 +0000 Subject: [PATCH] Update heartwood fixture and re-enable tests Signed-off-by: xphoniex --- scripts/create-seed-fixture-heartwood | 101 ++++++++++++++++---- scripts/run-httpd-with-fixtures | 2 +- tests/e2e/project.spec.ts | 66 ++++++++----- tests/e2e/project/commit.spec.ts | 52 +++++----- tests/e2e/project/commits.spec.ts | 95 +++++++++++------- tests/fixtures/seeds/palm-heartwood.tar.bz2 | Bin 15786 -> 28873 bytes tests/support/fixtures.ts | 8 +- 7 files changed, 216 insertions(+), 108 deletions(-) diff --git a/scripts/create-seed-fixture-heartwood b/scripts/create-seed-fixture-heartwood index e7853fa80..45bd91869 100755 --- a/scripts/create-seed-fixture-heartwood +++ b/scripts/create-seed-fixture-heartwood @@ -1,24 +1,29 @@ #!/usr/bin/env bash + +killall radicle-node +killall git-daemon + set -euo pipefail -PASSPHRASE=asdf -SEED="0.0.0.0:8080" +export RAD_PASSPHRASE=asdf REPO_ROOT=$(git rev-parse --show-toplevel) -ID=$(echo $RANDOM | md5sum | head -c 8) -BASE_PATH=$REPO_ROOT/tests/tmp/create-seed-fixture-$ID +ID=$(echo $RANDOM | md5sum | head -c 4) +BASE_PATH=$REPO_ROOT/tests/tmp/heartwood-$ID TEST_REPO_ARCHIVE=$REPO_ROOT/tests/fixtures/repos/source-browsing.tar.bz2 TEST_REPO_NAME=source-browsing TEST_REPO_PATH=$BASE_PATH/repos/$TEST_REPO_NAME PALM_RAD_HOME=$BASE_PATH/seeds/palm +PALM_CHECKOUT=$BASE_PATH/checkout/palm ALICE_RAD_HOME=$BASE_PATH/peers/alice ALICE_CHECKOUT=$BASE_PATH/checkout/alice BOB_RAD_HOME=$BASE_PATH/peers/bob BOB_CHECKOUT=$BASE_PATH/checkout/bob mkdir -p $PALM_RAD_HOME +mkdir -p $PALM_CHECKOUT mkdir -p $ALICE_RAD_HOME mkdir -p $ALICE_CHECKOUT mkdir -p $BOB_RAD_HOME @@ -27,25 +32,89 @@ mkdir -p $TEST_REPO_PATH tar -xf $TEST_REPO_ARCHIVE -C $TEST_REPO_PATH -RAD_HOME=$PALM_RAD_HOME RAD_PASSPHRASE=$PASSPHRASE rad auth +### PALM NODE ### -GIT_AUTHOR_NAME="Alice Liddell" -GIT_AUTHOR_EMAIL="alice@radicle.xyz" -GIT_COMMITTER_NAME="Alice Liddell" -GIT_COMMITTER_EMAIL="alice@radicle.xyz" +eval $(ssh-agent) -RAD_SEED=ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff RAD_HOME=$ALICE_RAD_HOME RAD_PASSPHRASE=$PASSPHRASE rad auth +export RAD_HOME=$PALM_RAD_HOME +export RAD_SEED=ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee + +rad auth +radicle-node --listen 0.0.0.0:3446 --git-daemon 0.0.0.0:4446 & + +### ALICE ### + +export RAD_HOME=$ALICE_RAD_HOME +export RAD_SEED=ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +export GIT_AUTHOR_NAME="Alice Liddell" +export GIT_AUTHOR_EMAIL="alice@radicle.xyz" +export GIT_COMMITTER_NAME="Alice Liddell" +export GIT_COMMITTER_EMAIL="alice@radicle.xyz" + +rad auth cd $ALICE_CHECKOUT git clone $TEST_REPO_PATH cd $TEST_REPO_NAME -git checkout feature/branch -git checkout orphaned-branch -git checkout main -RAD_HOME=$ALICE_RAD_HOME RAD_PASSPHRASE=$PASSPHRASE rad init --name "source-browsing" --description "Git repository for source browsing tests" --default-branch "main" --no-confirm -PROJECT_ID=$(RAD_HOME=$ALICE_RAD_HOME RAD_PASSPHRASE=$PASSPHRASE rad .) +git checkout main +rad init --name "source-browsing" \ + --description "Git repository for source browsing tests" \ + --default-branch "main" \ + --no-confirm + +git checkout feature/branch +git push rad + +git checkout orphaned-branch +git push rad + +radicle-node --listen 0.0.0.0:3444 --git-daemon 0.0.0.0:4444 \ + --connect z6Mkk7oqY4pPxhMmGEotDYsFo97vhCj85BLY1H256HrJmjN8@0.0.0.0:3446 & + +sleep 1 + +### PALM CLONE ### + +cd $PALM_CHECKOUT +export RAD_HOME=$PALM_RAD_HOME +rad clone rad:zKtT7DmF9H34KkvcKj9PHW19WzjT + +### BOB ### + +export GIT_AUTHOR_NAME="Bob Belcher" +export GIT_AUTHOR_EMAIL="bob@radicle.xyz" +export GIT_COMMITTER_NAME="Bob Belcher" +export GIT_COMMITTER_EMAIL="bob@radicle.xyz" +export GIT_COMMITTER_DATE="Mon Dec 21 14:00 2022 +0100" + +export RAD_HOME=$BOB_RAD_HOME +export RAD_SEED=fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe + +rad auth +rad auth +radicle-node --listen 0.0.0.0:3445 --git-daemon 0.0.0.0:4445 \ + --connect z6Mkk7oqY4pPxhMmGEotDYsFo97vhCj85BLY1H256HrJmjN8@0.0.0.0:3446 & + +sleep 2 + +cd $BOB_CHECKOUT +rad clone rad:zKtT7DmF9H34KkvcKj9PHW19WzjT + +cd $TEST_REPO_NAME +echo "Updated readme" > README.md +git add README.md +git commit --message "Update readme" --date "$GIT_COMMITTER_DATE" +git push rad + +### WAIT FOR SYNC WITH PALM ### + +sleep 2 cd $BASE_PATH -tar -cjf palm.tar.bz2 --exclude "post-receive" --exclude "pre-receive" -C $ALICE_RAD_HOME . +tar -cjf palm.tar.bz2 --exclude "post-receive" --exclude "pre-receive" -C $PALM_RAD_HOME . + +killall radicle-node +killall git-daemon diff --git a/scripts/run-httpd-with-fixtures b/scripts/run-httpd-with-fixtures index 4c06dc03d..1560628a2 100755 --- a/scripts/run-httpd-with-fixtures +++ b/scripts/run-httpd-with-fixtures @@ -1,7 +1,7 @@ #!/bin/sh set -e -REV=e01838a70a2e19d747a49085db6445b1b823901e +REV=a5811e43a74043e3bf1e706720bac3ec01b079c4 REPO_ROOT=$(git rev-parse --show-toplevel) FIXTURE=$REPO_ROOT/tests/fixtures/seeds/palm-heartwood.tar.bz2 diff --git a/tests/e2e/project.spec.ts b/tests/e2e/project.spec.ts index 43c5acc9b..23cd34394 100644 --- a/tests/e2e/project.spec.ts +++ b/tests/e2e/project.spec.ts @@ -2,6 +2,7 @@ import type { Page } from "@playwright/test"; import { aliceMainHead, aliceRemote, + bobRemote, expect, projectFixtureUrl, rid, @@ -251,17 +252,20 @@ test("clone modal", async ({ page }) => { }); test("peer and branch switching", async ({ page }) => { - if (process.env.HEARTWOOD) { - test.skip(); - } - await page.goto(projectFixtureUrl); // Alice's peer. { await page.getByTitle("Change peer").click(); - await page.locator("text=alice").click(); - await expect(page.getByTitle("Change peer")).toHaveText("alice delegate"); + if (process.env.HEARTWOOD) { + await page.locator(`text=${aliceRemote}`).click(); + await expect(page.getByTitle("Change peer")).toHaveText( + `${aliceRemote.substring(0, 6)}…${aliceRemote.slice(-6)}`, + ); + } else { + await page.locator("text=alice").click(); + await expect(page.getByTitle("Change peer")).toHaveText("alice delegate"); + } await expect( page.locator( `text=source-browsing / ${aliceRemote.substring( @@ -322,31 +326,45 @@ test("peer and branch switching", async ({ page }) => { // Bob's peer. { await page.getByTitle("Change peer").click(); - await page.locator("text=bob").click(); - - await expect(page.getByTitle("Change peer")).toHaveText("bob"); + if (process.env.HEARTWOOD) { + await page.locator(`text=${bobRemote}`).click(); + await expect(page.getByTitle("Change peer")).toHaveText( + `${bobRemote.substring(0, 6)}…${bobRemote.slice(-6)}`, + ); + } else { + await page.locator("text=bob").click(); + await expect(page.getByTitle("Change peer")).toHaveText("bob"); + } await expect(page.getByTitle("Change peer")).not.toHaveText("delegate"); // Default `main` branch. { - await expect(page.getByTitle("Current branch")).toContainText( - "main 2b32f6f", - ); - await expectCounts({ commits: 9, contributors: 2 }, page); - await expect(page.locator("text=2b32f6f Update readme")).toBeVisible(); + if (process.env.HEARTWOOD) { + await expect(page.getByTitle("Current branch")).toContainText( + "main 1e0bb83", + ); + await expectCounts({ commits: 9, contributors: 2 }, page); + await expect(page.locator("text=1e0bb83 Update readme")).toBeVisible(); + } else { + await expect(page.getByTitle("Current branch")).toContainText( + "main 2b32f6f", + ); + await expectCounts({ commits: 9, contributors: 2 }, page); + await expect(page.locator("text=2b32f6f Update readme")).toBeVisible(); + } } } }); test("only one modal can be open at a time", async ({ page }) => { - if (process.env.HEARTWOOD) { - test.skip(); - } - await page.goto(projectFixtureUrl); await page.getByTitle("Change peer").click(); - await page.locator(`text=alice ${aliceRemote.substring(0, 6)}`).click(); + if (process.env.HEARTWOOD) { + await page.locator(`text=${aliceRemote.substring(0, 6)}`).click(); + } else { + await page.locator(`text=alice ${aliceRemote.substring(0, 6)}`).click(); + } await page.getByText("Clone").click(); await expect(page.locator("text=Code font")).not.toBeVisible(); @@ -363,7 +381,11 @@ test("only one modal can be open at a time", async ({ page }) => { await page.getByTitle("Change peer").click(); await expect(page.locator("text=Code font")).not.toBeVisible(); await expect(page.locator("text=Use the Radicle CLI")).not.toBeVisible(); - await expect(page.locator("text=bob hyyzz9")).toBeVisible(); + if (process.env.HEARTWOOD) { + await expect(page.locator(`text=${bobRemote}`)).toBeVisible(); + } else { + await expect(page.locator("text=bob hyyzz9")).toBeVisible(); + } await expect(page.locator("text=feature/branch")).not.toBeVisible(); page.locator('button[name="Settings"]').click(); @@ -374,10 +396,6 @@ test("only one modal can be open at a time", async ({ page }) => { }); test.describe("browser error handling", () => { - if (process.env.HEARTWOOD) { - test.skip(); - } - test("error appears when folder can't be loaded", async ({ page }) => { await page.route( `**/v1/projects/${ridPrefix}${rid}/tree/${aliceMainHead}/markdown/`, diff --git a/tests/e2e/project/commit.spec.ts b/tests/e2e/project/commit.spec.ts index 07c571310..adb75b59f 100644 --- a/tests/e2e/project/commit.spec.ts +++ b/tests/e2e/project/commit.spec.ts @@ -5,16 +5,18 @@ import { bobRemote, } from "@tests/support/fixtures.js"; -const modifiedFileFixture = `${projectFixtureUrl}/remotes/${bobRemote}/commits/2b32f6fe50090ebdb4cd7441e943330da3e6ff04`; +const modifiedFileFixture = `${projectFixtureUrl}/remotes/${bobRemote}/commits/${ + process.env.HEARTWOOD + ? "1e0bb83a89b63da815f2fc24e7ae3c5ceb30e0eb" + : "2b32f6fe50090ebdb4cd7441e943330da3e6ff04" +}`; test("navigation from commit list", async ({ page }) => { - if (process.env.HEARTWOOD) { - test.skip(); - } - await page.goto(projectFixtureUrl); await page.getByTitle("Change peer").click(); - await page.locator("text=bob hyyzz9").click(); + await page + .locator(process.env.HEARTWOOD ? `text=${bobRemote}` : "text=bob hyyzz9") + .click(); await page.locator('role=button[name="Commit count"]').click(); await page.locator("text=Update readme").click(); @@ -22,10 +24,6 @@ test("navigation from commit list", async ({ page }) => { }); test("relative timestamps", async ({ page }) => { - if (process.env.HEARTWOOD) { - test.skip(); - } - await page.addInitScript(() => { window.initializeTestStubs = () => { window.e2eTestStubs.FakeTimers.install({ @@ -37,25 +35,33 @@ test("relative timestamps", async ({ page }) => { }); await page.goto(modifiedFileFixture); await expect( - page.locator(".commit header >> text=bob committed 22 hours ago"), + page.locator( + `.commit header >> text=${ + process.env.HEARTWOOD + ? "Bob Belcher committed now" + : "bob committed 22 hours ago" + }`, + ), ).toBeVisible(); }); test("modified file", async ({ page }) => { - if (process.env.HEARTWOOD) { - test.skip(); - } - await page.goto(modifiedFileFixture); // Commit header. { const header = page.locator(".commit header"); await expect(header.locator("text=Update readme")).toBeVisible(); - await expect(header.locator("text=Verified")).toBeVisible(); - await expect( - header.locator("text=2b32f6fe50090ebdb4cd7441e943330da3e6ff04"), - ).toBeVisible(); + if (!process.env.HEARTWOOD) { + await expect(header.locator("text=Verified")).toBeVisible(); + await expect( + header.locator("text=2b32f6fe50090ebdb4cd7441e943330da3e6ff04"), + ).toBeVisible(); + } else { + await expect( + header.locator("text=1e0bb83a89b63da815f2fc24e7ae3c5ceb30e0eb"), + ).toBeVisible(); + } } // Diff header. @@ -71,10 +77,6 @@ test("modified file", async ({ page }) => { }); test("created file", async ({ page }) => { - if (process.env.HEARTWOOD) { - test.skip(); - } - await page.goto( `${projectFixtureUrl}/remotes/${bobRemote}/commits/d6318f7f3d9c15b8ac6dd52267c53220d00f0982`, ); @@ -85,10 +87,6 @@ test("created file", async ({ page }) => { }); test("deleted file", async ({ page }) => { - if (process.env.HEARTWOOD) { - test.skip(); - } - await page.goto( `${projectFixtureUrl}/remotes/${bobRemote}/commits/cd13c2d9a8a930d64a82b6134b44d1b872e33662`, ); diff --git a/tests/e2e/project/commits.spec.ts b/tests/e2e/project/commits.spec.ts index 74e45818a..662923396 100644 --- a/tests/e2e/project/commits.spec.ts +++ b/tests/e2e/project/commits.spec.ts @@ -3,21 +3,25 @@ import { expect, projectFixtureUrl, bobRemote, + aliceRemote, } from "@tests/support/fixtures.js"; test("peer and branch switching", async ({ page }) => { - if (process.env.HEARTWOOD) { - test.skip(); - } - await page.goto(projectFixtureUrl); await page.locator('role=button[name="Commit count"]').click(); // Alice's peer. { await page.getByTitle("Change peer").click(); - await page.locator("text=alice hybg18").click(); - await expect(page.getByTitle("Change peer")).toHaveText("alice delegate"); + if (process.env.HEARTWOOD) { + await page.locator(`text=${aliceRemote}`).click(); + await expect(page.getByTitle("Change peer")).toHaveText( + `${aliceRemote.substring(0, 6)}…${aliceRemote.slice(-6)}`, + ); + } else { + await page.locator("text=alice hybg18").click(); + await expect(page.getByTitle("Change peer")).toHaveText("alice delegate"); + } await expect(page.getByText("Thursday, November 17, 2022")).toBeVisible(); await expect( @@ -60,13 +64,20 @@ test("peer and branch switching", async ({ page }) => { // Bob's peer. { await page.getByTitle("Change peer").click(); - await page.locator("text=bob hyyzz9").click(); - await expect(page.getByTitle("Change peer")).toHaveText("bob"); + if (process.env.HEARTWOOD) { + await page.locator(`text=${bobRemote}`).click(); + await expect(page.getByTitle("Change peer")).toHaveText( + `${bobRemote.substring(0, 6)}…${bobRemote.slice(-6)}`, + ); + } else { + await page.locator("text=bob hyyzz9").click(); + await expect(page.getByTitle("Change peer")).toHaveText("bob"); + } await expect(page.getByText("Tuesday, December 20, 2022")).toBeVisible(); await expect( page.locator(".commit-group-headers").first().locator(".commit-teaser"), - ).toHaveCount(3); + ).toHaveCount(process.env.HEARTWOOD ? 1 : 3); await expect(page.getByText("Thursday, November 17, 2022")).toBeVisible(); await expect( @@ -75,8 +86,13 @@ test("peer and branch switching", async ({ page }) => { await page.pause(); const latestCommit = page.locator(".commit-teaser").first(); - await expect(latestCommit).toContainText("Update readme"); - await expect(latestCommit).toContainText("2b32f6f"); + if (process.env.HEARTWOOD) { + await expect(latestCommit).toContainText("Update readme"); + await expect(latestCommit).toContainText("1e0bb83"); + } else { + await expect(latestCommit).toContainText("Update readme"); + await expect(latestCommit).toContainText("2b32f6f"); + } const earliestCommit = page.locator(".commit-teaser").last(); await expect(earliestCommit).toContainText( @@ -87,32 +103,30 @@ test("peer and branch switching", async ({ page }) => { }); test("verified badge", async ({ page }) => { - if (process.env.HEARTWOOD) { - test.skip(); - } - await page.goto(projectFixtureUrl); await page.locator('role=button[name="Commit count"]').click(); await page.getByTitle("Change peer").click(); - await page.locator("text=bob hyyzz9").click(); - await expect(page.getByTitle("Change peer")).toHaveText("bob"); - - await page.locator("text=Verified").hover(); - - await expect( - page.locator( - "text=This commit was signed with the committer's radicle key.", - ), - ).toBeVisible(); - await expect(page.locator(`text=bob committed ${bobRemote}`)).toBeVisible(); + if (process.env.HEARTWOOD) { + await page.locator(`text=${bobRemote}`).click(); + await expect(page.getByTitle("Change peer")).toHaveText( + `${bobRemote.substring(0, 6)}…${bobRemote.slice(-6)}`, + ); + } else { + await page.locator("text=bob hyyzz9").click(); + await expect(page.getByTitle("Change peer")).toHaveText("bob"); + // not applicable to heartwood? + await page.locator("text=Verified").hover(); + await expect( + page.locator( + "text=This commit was signed with the committer's radicle key.", + ), + ).toBeVisible(); + await expect(page.locator(`text=bob committed ${bobRemote}`)).toBeVisible(); + } }); test("relative timestamps", async ({ page }) => { - if (process.env.HEARTWOOD) { - test.skip(); - } - await page.addInitScript(() => { window.initializeTestStubs = () => { window.e2eTestStubs.FakeTimers.install({ @@ -127,12 +141,21 @@ test("relative timestamps", async ({ page }) => { await page.locator('role=button[name="Commit count"]').click(); await page.getByTitle("Change peer").click(); - await page.locator("text=bob hyyzz9").click(); - await expect(page.getByTitle("Change peer")).toHaveText("bob"); - - const latestCommit = page.locator(".commit-teaser").first(); - await expect(latestCommit).toContainText("bob committed 22 hours ago"); - await expect(latestCommit).toContainText("2b32f6f"); + if (process.env.HEARTWOOD) { + await page.locator(`text=${bobRemote}`).click(); + await expect(page.getByTitle("Change peer")).toHaveText( + `${bobRemote.substring(0, 6)}…${bobRemote.slice(-6)}`, + ); + const latestCommit = page.locator(".commit-teaser").first(); + await expect(latestCommit).toContainText("Bob Belcher committed now"); + await expect(latestCommit).toContainText("1e0bb83"); + } else { + await page.locator("text=bob hyyzz9").click(); + await expect(page.getByTitle("Change peer")).toHaveText("bob"); + const latestCommit = page.locator(".commit-teaser").first(); + await expect(latestCommit).toContainText("bob committed 22 hours ago"); + await expect(latestCommit).toContainText("2b32f6f"); + } const earliestCommit = page.locator(".commit").last(); await expect(earliestCommit).toContainText( diff --git a/tests/fixtures/seeds/palm-heartwood.tar.bz2 b/tests/fixtures/seeds/palm-heartwood.tar.bz2 index 4564f7328227a65ffa7c114bd41a12b050f18fee..e492b95abcc20f3e1650bcc76d2d1e5d291dbedf 100644 GIT binary patch literal 28873 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%0A*Y(8!^!oZ!ISk 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 Y#MhD@VkQaz!{$kXd2z+Ht^OS^xk5 literal 15786 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 diff --git a/tests/support/fixtures.ts b/tests/support/fixtures.ts index fb2eb4d4d..43bd001dd 100644 --- a/tests/support/fixtures.ts +++ b/tests/support/fixtures.ts @@ -168,9 +168,9 @@ export const aliceMainHead = "fcc929424b82984b7cbff9c01d2e20d9b1249842"; export const aliceRemote = process.env.HEARTWOOD ? "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi" : "hybg18bc4cu8z9xtj44skxperfdpxpp1wp8zygyzti5kfiggdizfxy"; - -export const bobRemote = - "hyyzz9w4ffg16zftjki3enajm4mkqkayb5ch1p6ns3f83np1hqkrp6"; +export const bobRemote = process.env.HEARTWOOD + ? "z6MksMTThc1aDU2Ztc43jJUivuyBLNWiLsDf4X65rABe7HbA" + : "hyyzz9w4ffg16zftjki3enajm4mkqkayb5ch1p6ns3f83np1hqkrp6"; export const rid = process.env.HEARTWOOD ? "zKtT7DmF9H34KkvcKj9PHW19WzjT" : "hnrkdi8be7n4hhqoz9rpzrgd68u9dr3zsxgmy"; @@ -179,5 +179,5 @@ export const projectFixtureUrl = `/seeds/0.0.0.0/${ridPrefix}${rid}`; export const seedPort = process.env.HEARTWOOD ? 8080 : "8777"; export const seedVersion = process.env.HEARTWOOD ? "0.1.0" : "0.2.0"; export const seedRemote = process.env.HEARTWOOD - ? "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi" + ? "z6Mkk7oqY4pPxhMmGEotDYsFo97vhCj85BLY1H256HrJmjN8" : "hybuytx44z9cfsm5739wecia9j4b7expgc15qkazph59szp57m4d3o";