diff --git a/cypress/e2e/project.spec.ts b/cypress/e2e/project.spec.ts
deleted file mode 100644
index c7c5b250e..000000000
--- a/cypress/e2e/project.spec.ts
+++ /dev/null
@@ -1,283 +0,0 @@
-/* eslint-disable @typescript-eslint/no-unused-vars */
-///
-import { MockProvider } from "@rsksmart/mock-web3-provider";
-
-const groupedCommits = [
- {
- groupDate: "Thursday, March 3, 2022",
- commits: [
- {
- header: {
- sha: "9cd3532",
- summary: "Second commit",
- description: "",
- committer: {
- name: "dabit3",
- mail: "dabit3@gmail.com",
- },
- committerTime: "06:51 GMT+1",
- },
- },
- ],
- },
- {
- groupDate: "Wednesday, March 2, 2022",
- commits: [
- {
- header: {
- sha: "e045b92",
- summary: "Update README",
- description: "",
- committer: {
- name: "dabit3",
- mail: "dabit3@gmail.com",
- },
- committerTime: "17:14 GMT+1",
- },
- },
- {
- header: {
- sha: "cbf5df4",
- summary: "initial commit",
- description: "this is the first commit of many",
- committer: {
- name: "dabit3",
- mail: "dabit3@gmail.com",
- },
- committerTime: "16:58 GMT+1",
- },
- },
- ],
- },
-];
-
-describe("Project view", () => {
- beforeEach(() => {
- cy.intercept("https://willow.radicle.garden:8777/", {
- fixture: "projectHome.json",
- });
- cy.intercept("https://willow.radicle.garden:8777/v1/peer", {
- fixture: "projectPeer.json",
- });
- cy.intercept(
- "https://willow.radicle.garden:8777/v1/projects/bright-forest-protocol",
- { fixture: "projectInfo.json" },
- );
- cy.intercept(
- "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy",
- { fixture: "projectInfo.json" },
- );
- cy.intercept(
- "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes",
- { fixture: "projectRemotes.json" },
- );
- cy.intercept(
- "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/issues",
- { fixture: "projectIssues.json" },
- );
- cy.intercept(
- "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/patches",
- { fixture: "projectPatches.json" },
- );
- cy.intercept(
- "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/tree/56e4e029c294b08546386e1fb706b772c7433c49",
- { fixture: "projectTree56e4e02.json" },
- );
- cy.intercept(
- "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/tree/cbf5df499ab4f4a908f1756fbe2c236a4530516a",
- { fixture: "projectTreecbf5df4.json" },
- );
- cy.intercept(
- "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes/hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke",
- { fixture: "projectBranches.json" },
- );
- cy.intercept(
- "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/readme/56e4e029c294b08546386e1fb706b772c7433c49",
- { fixture: "projectReadme.json" },
- );
- cy.intercept(
- "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/commits?parent=cbf5df499ab4f4a908f1756fbe2c236a4530516a?verified=true",
- { fixture: "projectCommits.json" },
- );
- cy.intercept(
- "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/readme/cbf5df499ab4f4a908f1756fbe2c236a4530516a",
- { fixture: "projectReadme.json" },
- );
- cy.intercept(
- "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/commits/cbf5df499ab4f4a908f1756fbe2c236a4530516a",
- { fixture: "projectCommit.json" },
- );
- });
-
- it("Page header", () => {
- cy.visit("/seeds/willow.radicle.garden/bright-forest-protocol", {
- onBeforeLoad(win) {
- const address = "0xB98bD7C7f656290071E52D1aA617D9cB4467Fd6D";
- const privateKey =
- "de926db3012af759b4f24b5a51ef6afa397f04670f634aa4f48d4480417007f3";
- win.ethereum = new MockProvider({
- address,
- privateKey,
- networkVersion: 1,
- });
- },
- });
- cy.get("div.title").contains("bright-forest-protocol");
- cy.get("div.urn").contains("rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy");
- cy.get("div.description").contains("bfc-sc");
- });
-
- it("Browser", () => {
- cy.get("div.column-right article div.markdown h1").should(
- "have.text",
- "Basic Sample Hardhat Project",
- );
- });
-
- it("Project Header", () => {
- cy.get("div.stat.seed span").should("have.text", "willow.radicle.garden");
- cy.get("div.stat.commit-count").should("have.text", "3\n commit(s)");
- cy.get("div.stat.contributor-count").should(
- "have.text",
- "1\n contributor(s)",
- );
- cy.get("div.stat.branch")
- .should("have.class", "not-allowed")
- .should("have.text", "main");
- cy.get("div.hash.desktop").should("have.text", "56e4e02");
- cy.get("div.clone-button").click();
- });
-
- it("Peer selector", () => {
- cy.get("div.selector").click();
- cy.get("div.dropdown-item")
- .contains(
- "dabit3 hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke delegate",
- )
- .click();
- cy.location().should(location => {
- expect(location.pathname).to.eq(
- "/seeds/willow.radicle.garden/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes/hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke/tree",
- );
- });
- cy.get(
- "span.peer-id span[title='hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke']",
- ).should("have.text", "hyndc7…j9oeke");
- cy.get("div.stat.peer span.peer-id").should("have.text", "dabit3");
- cy.get("div.stat.peer span.badge").should("have.text", "delegate");
- });
-
- it("Branch selector", () => {
- cy.get("div.commit div.stat.branch").click();
- cy.get("div.dropdown-item")
- .first()
- .contains("main")
- .next()
- .contains("master")
- .click();
- cy.location().should(location => {
- expect(location.pathname).to.eq(
- "/seeds/willow.radicle.garden/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes/hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke/tree/master",
- );
- });
- cy.get("div.stat.branch").should("have.text", "master");
- cy.get("div.hash.desktop").should("have.text", "cbf5df4");
- });
-
- it("Commits button", () => {
- cy.get("div.stat.commit-count").should("not.have.class", "active").click();
- cy.location().should(location => {
- expect(location.pathname).to.eq(
- "/seeds/willow.radicle.garden/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes/hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke/history/master",
- );
- });
- cy.get("div.stat.commit-count").should("have.class", "active");
- });
-
- it("Commit group & commit trailer", () => {
- // This iterates over the commit groups and then over each commit.
- cy.get(".commit-group")
- .should("have.length", 2)
- .each((item, index) => {
- expect(Cypress.$(item.children(".commit-date")).text()).to.eq(
- groupedCommits[index].groupDate,
- );
- const $el = Cypress.$(item.find(".commit-teaser"));
- cy.wrap($el).each((commit, commitIndex) => {
- expect(Cypress.$(commit).find(".hash").text()).to.eq(
- groupedCommits[index].commits[commitIndex].header.sha,
- );
- expect(Cypress.$(commit).find(".summary").text()).to.eq(
- groupedCommits[index].commits[commitIndex].header.summary,
- );
- expect(Cypress.$(commit).find(".committer").first().text()).to.eq(
- groupedCommits[index].commits[commitIndex].header.committer.name,
- );
- });
- });
-
- cy.get(".commit-teaser .badge").trigger("mouseenter");
- // Checking that the initial commit has the Verified badge
- cy.get(".popup .header").should(
- "have.text",
- "✔ This commit was signed\n with the committer's radicle key.",
- );
- cy.get(".popup .peer").should(
- "contain.text",
- "hyyg555wwkkutaysg6yr67qnu5d5ji54iur3n5uzzszndh8dp7ofue",
- );
- cy.get(".popup .committer").should("contain.text", "dabit3");
-
- cy.get(".commit").last().click();
- });
-
- it("Commit detail view", () => {
- cy.location().should(location => {
- expect(location.pathname).to.eq(
- "/seeds/willow.radicle.garden/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes/hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke/commits/cbf5df499ab4f4a908f1756fbe2c236a4530516a",
- );
- });
- cy.get("header .summary .text-medium").should(
- "have.text",
- "initial commit",
- );
- cy.get("header pre.description").should(
- "have.text",
- "this is the first commit of many",
- );
- cy.get("header .committer").should("have.text", "dabit3");
- cy.get("div.changeset-summary").should(
- "have.text",
- "1 file(s) changed, 1 file(s) created, 1 file(s) deleted\n with\n 0 addition(s)\n and\n 0 deletion(s)",
- );
- cy.get("header.file-header:nth-child(1) p.file-path")
- .first()
- .should("have.text", "test.md")
- .next()
- .should("have.text", "created");
- cy.get("tr.diff-line td.diff-line-number").contains("16");
- cy.get("tr.diff-line td.diff-line-content").contains(
- "To prevent front-running, the RAD/USDC balances are set through the Uniswap router *proxy* contract",
- );
- });
-
- it("Issues button", () => {
- cy.get("div.stat.issue-count").click();
- cy.location().should(location => {
- expect(location.pathname).to.eq(
- "/seeds/willow.radicle.garden/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes/hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke/issues",
- );
- });
- cy.get("div.stat.issue-count").should("have.class", "active");
- });
-
- it("Patches button", () => {
- cy.get("div.stat.patch-count").click();
- cy.location().should(location => {
- expect(location.pathname).to.eq(
- "/seeds/willow.radicle.garden/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes/hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke/patches",
- );
- });
- cy.get("div.stat.patch-count").should("have.class", "active");
- });
-});
diff --git a/cypress/e2e/projectCommits.spec.ts b/cypress/e2e/projectCommits.spec.ts
new file mode 100644
index 000000000..83cfa46b9
--- /dev/null
+++ b/cypress/e2e/projectCommits.spec.ts
@@ -0,0 +1,176 @@
+/* eslint-disable @typescript-eslint/no-unused-vars */
+///
+import { MockProvider } from "@rsksmart/mock-web3-provider";
+
+const groupedCommits = [
+ {
+ groupDate: "Thursday, March 3, 2022",
+ commits: [
+ {
+ header: {
+ sha: "9cd3532",
+ summary: "Second commit",
+ description: "",
+ committer: {
+ name: "dabit3",
+ mail: "dabit3@gmail.com",
+ },
+ committerTime: "06:51 GMT+1",
+ },
+ },
+ ],
+ },
+ {
+ groupDate: "Wednesday, March 2, 2022",
+ commits: [
+ {
+ header: {
+ sha: "e045b92",
+ summary: "Update README",
+ description: "",
+ committer: {
+ name: "dabit3",
+ mail: "dabit3@gmail.com",
+ },
+ committerTime: "17:14 GMT+1",
+ },
+ },
+ {
+ header: {
+ sha: "cbf5df4",
+ summary: "initial commit",
+ description: "this is the first commit of many",
+ committer: {
+ name: "dabit3",
+ mail: "dabit3@gmail.com",
+ },
+ committerTime: "16:58 GMT+1",
+ },
+ },
+ ],
+ },
+];
+
+describe("Project commits", () => {
+ beforeEach(() => {
+ cy.intercept("/", {
+ fixture: "projectHome.json",
+ }).as("seedHome");
+ cy.intercept("v1/peer", {
+ fixture: "projectPeer.json",
+ }).as("seedPeer");
+ cy.intercept("v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy", {
+ fixture: "projectInfo.json",
+ }).as("seedInfo");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes",
+ { fixture: "projectRemotes.json" },
+ ).as("seedRemotes");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/tree/56e4e029c294b08546386e1fb706b772c7433c49/",
+ { fixture: "projectTree56e4e02.json" },
+ ).as("seedTree56e4e02");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/tree/cbf5df499ab4f4a908f1756fbe2c236a4530516a/",
+ { fixture: "projectTreecbf5df4.json" },
+ ).as("seedTreecbf5df4");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/commits?parent=56e4e029c294b08546386e1fb706b772c7433c49&verified=true",
+ { fixture: "projectCommits.json" },
+ ).as("seedCommits");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/commits/cbf5df499ab4f4a908f1756fbe2c236a4530516a",
+ { fixture: "projectCommit.json" },
+ ).as("seedCommit");
+ });
+
+ it("Commit group & commit trailer", () => {
+ cy.visit(
+ "/seeds/willow.radicle.garden/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/history",
+ {
+ onBeforeLoad(win) {
+ const address = "0xB98bD7C7f656290071E52D1aA617D9cB4467Fd6D";
+ const privateKey =
+ "de926db3012af759b4f24b5a51ef6afa397f04670f634aa4f48d4480417007f3";
+ win.ethereum = new MockProvider({
+ address,
+ privateKey,
+ networkVersion: 1,
+ });
+ },
+ },
+ );
+ cy.wait([
+ "@seedHome",
+ "@seedPeer",
+ "@seedInfo",
+ "@seedRemotes",
+ "@seedTree56e4e02",
+ "@seedCommits",
+ ]);
+ // This iterates over the commit groups and then over each commit.
+ cy.get(".commit-group")
+ .should("have.length", 2)
+ .each((item, index) => {
+ expect(Cypress.$(item.children(".commit-date")).text()).to.eq(
+ groupedCommits[index].groupDate,
+ );
+ const $el = Cypress.$(item.find(".commit-teaser"));
+ cy.wrap($el).each((commit, commitIndex) => {
+ expect(Cypress.$(commit).find(".hash").text()).to.eq(
+ groupedCommits[index].commits[commitIndex].header.sha,
+ );
+ expect(Cypress.$(commit).find(".summary").text()).to.eq(
+ groupedCommits[index].commits[commitIndex].header.summary,
+ );
+ expect(Cypress.$(commit).find(".committer").first().text()).to.eq(
+ groupedCommits[index].commits[commitIndex].header.committer.name,
+ );
+ });
+ });
+
+ cy.get(".commit-teaser .badge").trigger("mouseenter");
+ // Checking that the initial commit has the Verified badge
+ cy.get(".popup .header").should(
+ "have.text",
+ "✔ This commit was signed\n with the committer's radicle key.",
+ );
+ cy.get(".popup .peer").should(
+ "contain.text",
+ "hyyg555wwkkutaysg6yr67qnu5d5ji54iur3n5uzzszndh8dp7ofue",
+ );
+ cy.get(".popup .committer").should("contain.text", "dabit3");
+
+ cy.get(".commit").last().click();
+ });
+
+ it("Commit detail view", () => {
+ cy.location().should(location => {
+ expect(location.pathname).to.eq(
+ "/seeds/willow.radicle.garden/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/commits/cbf5df499ab4f4a908f1756fbe2c236a4530516a",
+ );
+ });
+ cy.get("header .summary .text-medium").should(
+ "have.text",
+ "initial commit",
+ );
+ cy.get(".commit pre.description").should(
+ "have.text",
+ "this is the first commit of many",
+ );
+ cy.get("header .committer").should("have.text", "dabit3");
+ cy.get("div.changeset-summary").should(
+ "have.text",
+ "1 file(s) changed, 1 file(s) created, 1 file(s) deleted\n with\n 0 addition(s)\n and\n 0 deletion(s)",
+ );
+ cy.get("header.file-header:nth-child(1) p.file-path")
+ .first()
+ .should("have.text", "test.md")
+ .next()
+ .should("have.text", "created");
+ cy.get("tr.diff-line td.diff-line-number").contains("16");
+ cy.get("tr.diff-line td.diff-line-content").contains(
+ "To prevent front-running, the RAD/USDC balances are set through the Uniswap router *proxy* contract",
+ );
+ });
+});
diff --git a/cypress/e2e/projectHeader.spec.ts b/cypress/e2e/projectHeader.spec.ts
new file mode 100644
index 000000000..60ec7b428
--- /dev/null
+++ b/cypress/e2e/projectHeader.spec.ts
@@ -0,0 +1,172 @@
+/* eslint-disable @typescript-eslint/no-unused-vars */
+///
+import { MockProvider } from "@rsksmart/mock-web3-provider";
+
+describe("Project header", () => {
+ beforeEach(() => {
+ cy.intercept("/", {
+ fixture: "projectHome.json",
+ }).as("projectHome");
+ cy.intercept("v1/peer", {
+ fixture: "projectPeer.json",
+ }).as("projectPeer");
+ cy.intercept("v1/projects/bright-forest-protocol", {
+ fixture: "projectInfo.json",
+ }).as("projectInfo");
+ cy.intercept("v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy", {
+ fixture: "projectInfo.json",
+ }).as("projectInfo");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes",
+ { fixture: "projectRemotes.json" },
+ ).as("projectRemotes");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/issues",
+ { fixture: "projectIssues.json" },
+ ).as("projectIssues");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/patches",
+ { fixture: "projectPatches.json" },
+ ).as("projectPatches");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/tree/56e4e029c294b08546386e1fb706b772c7433c49",
+ { fixture: "projectTree56e4e02.json" },
+ ).as("projectTree56e4e02");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/tree/cbf5df499ab4f4a908f1756fbe2c236a4530516a",
+ { fixture: "projectTreecbf5df4.json" },
+ ).as("projectTreecbf5df4");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes/hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke",
+ { fixture: "projectBranches.json" },
+ ).as("projectBranches");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/readme/56e4e029c294b08546386e1fb706b772c7433c49",
+ { fixture: "projectReadme.json" },
+ ).as("projectReadme");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/commits?parent=cbf5df499ab4f4a908f1756fbe2c236a4530516a?verified=true",
+ { fixture: "projectCommits.json" },
+ ).as("projectCommits");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/readme/cbf5df499ab4f4a908f1756fbe2c236a4530516a",
+ { fixture: "projectReadme.json" },
+ ).as("projectReadme");
+ cy.intercept(
+ "v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/commits/cbf5df499ab4f4a908f1756fbe2c236a4530516a",
+ { fixture: "projectCommit.json" },
+ ).as("projectCommit");
+ });
+ it("renders header correctly", () => {
+ cy.visit("/seeds/willow.radicle.garden/bright-forest-protocol", {
+ onBeforeLoad(win) {
+ const address = "0xB98bD7C7f656290071E52D1aA617D9cB4467Fd6D";
+ const privateKey =
+ "de926db3012af759b4f24b5a51ef6afa397f04670f634aa4f48d4480417007f3";
+ win.ethereum = new MockProvider({
+ address,
+ privateKey,
+ networkVersion: 1,
+ });
+ },
+ });
+ cy.wait([
+ "@projectHome",
+ "@projectPeer",
+ "@projectInfo",
+ "@projectRemotes",
+ "@projectTree56e4e02",
+ "@projectReadme",
+ ]);
+ cy.get("div.stat.seed span").should("have.text", "willow.radicle.garden");
+ cy.get("div.stat.commit-count").should("have.text", "3\n commit(s)");
+ cy.get("div.stat.contributor-count").should(
+ "have.text",
+ "1\n contributor(s)",
+ );
+ cy.get("div.stat.branch")
+ .should("have.class", "not-allowed")
+ .should("have.text", "main");
+ cy.get("div.hash.desktop").should("have.text", "56e4e02");
+ cy.get("div.clone-button").click();
+ });
+
+ it("Peer Selector", () => {
+ cy.get("div.selector").click();
+ cy.get("div.dropdown-item")
+ .contains(
+ "dabit3 hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke delegate",
+ )
+ .click();
+ cy.wait([
+ "@projectHome",
+ "@projectPeer",
+ "@projectInfo",
+ "@projectRemotes",
+ "@projectBranches",
+ "@projectTree56e4e02",
+ "@projectReadme",
+ ]);
+ cy.location().should(location => {
+ expect(location.pathname).to.eq(
+ "/seeds/willow.radicle.garden/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes/hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke/tree",
+ );
+ });
+ cy.get(
+ "span.peer-id span[title='hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke']",
+ ).should("have.text", "hyndc7…j9oeke");
+ cy.get("div.stat.peer span.peer-id").should("have.text", "dabit3");
+ cy.get("div.stat.peer span.badge").should("have.text", "delegate");
+ });
+
+ it("Branch selector", () => {
+ cy.get("div.commit div.stat.branch").click();
+ cy.get("div.dropdown-item")
+ .first()
+ .contains("main")
+ .next()
+ .contains("master")
+ .click();
+ cy.wait(["@projectTreecbf5df4", "@projectReadme"]);
+ cy.location().should(location => {
+ expect(location.pathname).to.eq(
+ "/seeds/willow.radicle.garden/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes/hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke/tree/master",
+ );
+ });
+ cy.get("div.stat.branch").should("have.text", "master");
+ cy.get("div.hash.desktop").should("have.text", "cbf5df4");
+ });
+
+ it("Commits button", () => {
+ cy.get("div.stat.commit-count").should("not.have.class", "active").click();
+ cy.wait(["@projectTreecbf5df4", "@projectCommits"]);
+ cy.location().should(location => {
+ expect(location.pathname).to.eq(
+ "/seeds/willow.radicle.garden/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes/hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke/history/master",
+ );
+ });
+ cy.get("div.stat.commit-count").should("have.class", "active");
+ });
+
+ it("Issues button", () => {
+ cy.get("div.stat.issue-count").click();
+ cy.wait(["@projectTreecbf5df4", "@projectIssues"]);
+ cy.location().should(location => {
+ expect(location.pathname).to.eq(
+ "/seeds/willow.radicle.garden/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes/hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke/issues",
+ );
+ });
+ cy.get("div.stat.issue-count").should("have.class", "active");
+ });
+
+ it("Patches button", () => {
+ cy.get("div.stat.patch-count").click();
+ cy.wait(["@projectTree56e4e02", "@projectPatches"]);
+ cy.location().should(location => {
+ expect(location.pathname).to.eq(
+ "/seeds/willow.radicle.garden/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes/hyndc7nx9keq76p1bkw9831arcndeeu3trwsc7kxt3osmpi6j9oeke/patches",
+ );
+ });
+ cy.get("div.stat.patch-count").should("have.class", "active");
+ });
+});
diff --git a/cypress/e2e/projectRoot.spec.ts b/cypress/e2e/projectRoot.spec.ts
new file mode 100644
index 000000000..b5c3938f5
--- /dev/null
+++ b/cypress/e2e/projectRoot.spec.ts
@@ -0,0 +1,56 @@
+/* eslint-disable @typescript-eslint/no-unused-vars */
+///
+import { MockProvider } from "@rsksmart/mock-web3-provider";
+
+describe("Root", () => {
+ it("Meta", () => {
+ cy.intercept("https://willow.radicle.garden:8777/", {
+ fixture: "projectHome.json",
+ }).as("projectHome");
+ cy.intercept("https://willow.radicle.garden:8777/v1/peer", {
+ fixture: "projectPeer.json",
+ }).as("projectPeer");
+ cy.intercept(
+ "https://willow.radicle.garden:8777/v1/projects/bright-forest-protocol",
+ { fixture: "projectInfo.json" },
+ ).as("projectInfo");
+ cy.intercept(
+ "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/remotes",
+ { fixture: "projectRemotes.json" },
+ ).as("projectRemotes");
+ cy.intercept(
+ "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/tree/56e4e029c294b08546386e1fb706b772c7433c49",
+ { fixture: "projectTree56e4e02.json" },
+ ).as("projectTree56e4e02");
+ cy.intercept(
+ "https://willow.radicle.garden:8777/v1/projects/rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy/readme/56e4e029c294b08546386e1fb706b772c7433c49",
+ { fixture: "projectReadme.json" },
+ ).as("projectReadme");
+ cy.visit("/seeds/willow.radicle.garden/bright-forest-protocol", {
+ onBeforeLoad(win) {
+ const address = "0xB98bD7C7f656290071E52D1aA617D9cB4467Fd6D";
+ const privateKey =
+ "de926db3012af759b4f24b5a51ef6afa397f04670f634aa4f48d4480417007f3";
+ win.ethereum = new MockProvider({
+ address,
+ privateKey,
+ networkVersion: 1,
+ });
+ },
+ });
+ cy.wait([
+ "@projectHome",
+ "@projectPeer",
+ "@projectInfo",
+ "@projectRemotes",
+ "@projectTree56e4e02",
+ ]);
+ cy.get("div.title").contains("bright-forest-protocol");
+ cy.get("div.urn").contains("rad:git:hnrk8mbpirp7ua7sy66o4t9soasbq4y8uwgoy");
+ cy.get("div.description").contains("bfc-sc");
+ cy.get("div.column-right article div.markdown h1").should(
+ "have.text",
+ "Basic Sample Hardhat Project",
+ );
+ });
+});