diff --git a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.ts b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.ts
index e2b81ba..a20a389 100644
--- a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.ts
+++ b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.ts
@@ -42,10 +42,9 @@
 import {customElement, property, state} from 'lit/decorators.js';
 import {ifDefined} from 'lit/directives/if-defined.js';
 import {ValueChangedEvent} from '../../../types/events';
-import {GroupDetailView, RepoDetailView} from '../../../utils/router-util';
 import {AdminChildView, AdminViewState} from '../../../models/views/admin';
-import {GroupViewState} from '../../../models/views/group';
-import {RepoViewState} from '../../../models/views/repo';
+import {GroupDetailView, GroupViewState} from '../../../models/views/group';
+import {RepoDetailView, RepoViewState} from '../../../models/views/repo';
 
 const INTERNAL_GROUP_REGEX = /^[\da-f]{40}$/;
 
diff --git a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.ts b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.ts
index 3ee7e0a..2bace2c 100644
--- a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.ts
+++ b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.ts
@@ -20,9 +20,10 @@
 import {GroupId, GroupName, RepoName, Timestamp} from '../../../types/common';
 import {GrDropdownList} from '../../shared/gr-dropdown-list/gr-dropdown-list';
 import {GrGroup} from '../gr-group/gr-group';
-import {GroupDetailView, RepoDetailView} from '../../../utils/router-util';
 import {fixture, html, assert} from '@open-wc/testing';
 import {AdminChildView} from '../../../models/views/admin';
+import {GroupDetailView} from '../../../models/views/group';
+import {RepoDetailView} from '../../../models/views/repo';
 
 function createAdminCapabilities() {
   return {
diff --git a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.ts b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.ts
index ee8be03..889a859 100644
--- a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.ts
+++ b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.ts
@@ -16,7 +16,7 @@
 import {customElement, property, state} from 'lit/decorators.js';
 import {BindValueChangeEvent} from '../../../types/events';
 import {fireEvent} from '../../../utils/event-util';
-import {RepoDetailView} from '../../../utils/router-util';
+import {RepoDetailView} from '../../../models/views/repo';
 
 declare global {
   interface HTMLElementTagNameMap {
diff --git a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog_test.ts b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog_test.ts
index 6188b5f..9e455d1 100644
--- a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog_test.ts
+++ b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog_test.ts
@@ -13,8 +13,8 @@
 } from '../../../test/test-utils';
 import {BranchName} from '../../../types/common';
 import {IronInputElement} from '@polymer/iron-input';
-import {RepoDetailView} from '../../../utils/router-util';
 import {fixture, html, assert} from '@open-wc/testing';
+import {RepoDetailView} from '../../../models/views/repo';
 
 suite('gr-create-pointer-dialog tests', () => {
   let element: GrCreatePointerDialog;
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list.ts b/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list.ts
index cec6fde..86d4bc5 100644
--- a/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list.ts
+++ b/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list.ts
@@ -36,8 +36,7 @@
 import {BindValueChangeEvent} from '../../../types/events';
 import {assertIsDefined} from '../../../utils/common-util';
 import {ifDefined} from 'lit/directives/if-defined.js';
-import {RepoDetailView} from '../../../utils/router-util';
-import {RepoViewState} from '../../../models/views/repo';
+import {RepoDetailView, RepoViewState} from '../../../models/views/repo';
 
 const PGP_START = '-----BEGIN PGP SIGNATURE-----';
 
@@ -407,7 +406,7 @@
     repo: RepoName | undefined,
     itemsPerPage: number,
     offset: number | undefined,
-    detailType: string
+    detailType?: string
   ) {
     if (filter === undefined || !repo || offset === undefined) {
       return Promise.reject(new Error('filter or repo or offset undefined'));
@@ -514,7 +513,7 @@
           this.repo,
           this.itemsPerPage,
           this.offset,
-          this.detailType!
+          this.detailType
         );
       }
     });
@@ -547,7 +546,7 @@
               this.repo,
               this.itemsPerPage,
               this.offset,
-              this.detailType!
+              this.detailType
             );
           }
         });
@@ -561,7 +560,7 @@
               this.repo,
               this.itemsPerPage,
               this.offset,
-              this.detailType!
+              this.detailType
             );
           }
         });
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list_test.ts b/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list_test.ts
index bbdf99c..13f6b2b 100644
--- a/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list_test.ts
+++ b/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list_test.ts
@@ -34,8 +34,8 @@
 import {GrDialog} from '../../shared/gr-dialog/gr-dialog';
 import {GrListView} from '../../shared/gr-list-view/gr-list-view';
 import {SHOWN_ITEMS_COUNT} from '../../../constants/constants';
-import {RepoDetailView} from '../../../utils/router-util';
 import {fixture, html, assert} from '@open-wc/testing';
+import {RepoDetailView} from '../../../models/views/repo';
 
 function branchGenerator(counter: number) {
   return {
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts
index a4348a9..93d5d1f 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts
@@ -104,6 +104,7 @@
 import {customElement, property, query, state} from 'lit/decorators.js';
 import {ifDefined} from 'lit/directives/if-defined.js';
 import {assertIsDefined, queryAll} from '../../../utils/common-util';
+import {rootUrl} from '../../../utils/router-util';
 
 const ERR_BRANCH_EMPTY = 'The destination branch can’t be empty.';
 const ERR_COMMIT_EMPTY = 'The commit message can’t be empty.';
@@ -1844,7 +1845,7 @@
         }
         case ChangeActions.DELETE:
           if (action.__type === ActionType.CHANGE) {
-            GerritNav.navigateToRelativeUrl(GerritNav.getUrlForRoot());
+            GerritNav.navigateToRelativeUrl(rootUrl());
           }
           break;
         case ChangeActions.WIP:
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
index dbd8011..5d82daf 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
@@ -182,6 +182,7 @@
 import {CopyLink, GrCopyLinks} from '../gr-copy-links/gr-copy-links';
 import {KnownExperimentId} from '../../../services/flags/flags';
 import {ChangeViewState} from '../../../models/views/change';
+import {rootUrl} from '../../../utils/router-util';
 
 const MIN_LINES_FOR_COMMIT_COLLAPSE = 18;
 
@@ -2592,7 +2593,7 @@
   private determinePageBack() {
     // Default backPage to root if user came to change view page
     // via an email link, etc.
-    GerritNav.navigateToRelativeUrl(this.backPage || GerritNav.getUrlForRoot());
+    GerritNav.navigateToRelativeUrl(this.backPage || rootUrl());
   }
 
   private handleLabelRemoved(
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
index a4b185a..cb9f5dc 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
@@ -99,6 +99,7 @@
 import {GrButton} from '../../shared/gr-button/gr-button';
 import {GrCopyLinks} from '../gr-copy-links/gr-copy-links';
 import {ChangeViewState} from '../../../models/views/change';
+import {rootUrl} from '../../../utils/router-util';
 
 suite('gr-change-view tests', () => {
   let element: GrChangeView;
@@ -811,9 +812,7 @@
       const relativeNavStub = sinon.stub(GerritNav, 'navigateToRelativeUrl');
       pressKey(element, 'u');
       assert.isTrue(relativeNavStub.called);
-      assert.isTrue(
-        relativeNavStub.lastCall.calledWithExactly(GerritNav.getUrlForRoot())
-      );
+      assert.isTrue(relativeNavStub.lastCall.calledWithExactly(rootUrl()));
     });
 
     test('U should navigate to backPage if set', () => {
diff --git a/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.ts b/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.ts
index 46cb2f0..2b74e97 100644
--- a/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.ts
+++ b/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.ts
@@ -28,9 +28,9 @@
 import {
   DashboardSection,
   GenerateUrlParameters,
-  GroupDetailView,
-  RepoDetailView,
 } from '../../../utils/router-util';
+import {RepoDetailView} from '../../../models/views/repo';
+import {GroupDetailView} from '../../../models/views/group';
 
 // Navigation parameters object format:
 //
@@ -604,12 +604,6 @@
     });
   },
 
-  getUrlForRoot() {
-    return this._getUrlFor({
-      view: GerritView.ROOT,
-    });
-  },
-
   /**
    * @param repo The name of the repo.
    * @param dashboard The ID of the dashboard, in the form of '<ref>:<path>'.
@@ -617,7 +611,7 @@
   getUrlForRepoDashboard(repo: RepoName, dashboard: DashboardId) {
     return this._getUrlFor({
       view: GerritView.DASHBOARD,
-      repo,
+      project: repo,
       dashboard,
     });
   },
@@ -632,11 +626,11 @@
     this._navigate(relativeUrl);
   },
 
-  getUrlForRepo(repoName: RepoName) {
+  getUrlForRepo(repo: RepoName) {
     return this._getUrlFor({
       view: GerritView.REPO,
       detail: RepoDetailView.GENERAL,
-      repoName,
+      repo,
     });
   },
 
@@ -647,42 +641,42 @@
     this._navigate(this.getUrlForRepo(repoName));
   },
 
-  getUrlForRepoTags(repoName: RepoName) {
+  getUrlForRepoTags(repo: RepoName) {
     return this._getUrlFor({
       view: GerritView.REPO,
-      repoName,
+      repo,
       detail: RepoDetailView.TAGS,
     });
   },
 
-  getUrlForRepoBranches(repoName: RepoName) {
+  getUrlForRepoBranches(repo: RepoName) {
     return this._getUrlFor({
       view: GerritView.REPO,
-      repoName,
+      repo,
       detail: RepoDetailView.BRANCHES,
     });
   },
 
-  getUrlForRepoAccess(repoName: RepoName) {
+  getUrlForRepoAccess(repo: RepoName) {
     return this._getUrlFor({
       view: GerritView.REPO,
-      repoName,
+      repo,
       detail: RepoDetailView.ACCESS,
     });
   },
 
-  getUrlForRepoCommands(repoName: RepoName) {
+  getUrlForRepoCommands(repo: RepoName) {
     return this._getUrlFor({
       view: GerritView.REPO,
-      repoName,
+      repo,
       detail: RepoDetailView.COMMANDS,
     });
   },
 
-  getUrlForRepoDashboards(repoName: RepoName) {
+  getUrlForRepoDashboards(repo: RepoName) {
     return this._getUrlFor({
       view: GerritView.REPO,
-      repoName,
+      repo,
       detail: RepoDetailView.DASHBOARDS,
     });
   },
diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router.ts b/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
index 804a2fd..9719c99 100644
--- a/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
+++ b/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
@@ -50,8 +50,6 @@
   GenerateUrlChangeViewParameters,
   GenerateUrlDiffViewParameters,
   GenerateUrlParameters,
-  GroupDetailView,
-  RepoDetailView,
 } from '../../../utils/router-util';
 import {
   LATEST_ATTEMPT,
@@ -59,6 +57,8 @@
 } from '../../../models/checks/checks-util';
 import {AdminChildView} from '../../../models/views/admin';
 import {AgreementViewState} from '../../../models/views/agreement';
+import {RepoDetailView} from '../../../models/views/repo';
+import {GroupDetailView} from '../../../models/views/group';
 
 const RoutePattern = {
   ROOT: '/',
diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts
index af67b2a..5f8c278 100644
--- a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts
+++ b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts
@@ -38,13 +38,13 @@
 import {AppElementParams} from '../../gr-app-types';
 import {
   GenerateUrlParameters,
-  GroupDetailView,
   GenerateUrlEditViewParameters,
   GenerateUrlChangeViewParameters,
-  RepoDetailView,
 } from '../../../utils/router-util';
 import {assert} from '@open-wc/testing';
 import {AdminChildView} from '../../../models/views/admin';
+import {RepoDetailView} from '../../../models/views/repo';
+import {GroupDetailView} from '../../../models/views/group';
 
 suite('gr-router tests', () => {
   let router: GrRouter;
diff --git a/polygerrit-ui/app/services/router/router-model.ts b/polygerrit-ui/app/services/router/router-model.ts
index fbf1fa7..8b3b0b8 100644
--- a/polygerrit-ui/app/services/router/router-model.ts
+++ b/polygerrit-ui/app/services/router/router-model.ts
@@ -24,7 +24,6 @@
   GROUP = 'group',
   PLUGIN_SCREEN = 'plugin-screen',
   REPO = 'repo',
-  ROOT = 'root',
   SEARCH = 'search',
   SETTINGS = 'settings',
 }
diff --git a/polygerrit-ui/app/utils/admin-nav-util.ts b/polygerrit-ui/app/utils/admin-nav-util.ts
index e559467..d2bad06 100644
--- a/polygerrit-ui/app/utils/admin-nav-util.ts
+++ b/polygerrit-ui/app/utils/admin-nav-util.ts
@@ -13,8 +13,9 @@
 import {hasOwnProperty} from './common-util';
 import {GerritView} from '../services/router/router-model';
 import {MenuLink} from '../api/admin';
-import {GroupDetailView, RepoDetailView} from './router-util';
 import {AdminChildView} from '../models/views/admin';
+import {GroupDetailView} from '../models/views/group';
+import {RepoDetailView} from '../models/views/repo';
 
 const ADMIN_LINKS: NavLink[] = [
   {
diff --git a/polygerrit-ui/app/utils/router-util.ts b/polygerrit-ui/app/utils/router-util.ts
index 97e9ae0..4c1003f 100644
--- a/polygerrit-ui/app/utils/router-util.ts
+++ b/polygerrit-ui/app/utils/router-util.ts
@@ -7,8 +7,6 @@
   BasePatchSetNum,
   BranchName,
   ChangeInfo,
-  DashboardId,
-  GroupId,
   NumericChangeId,
   PARENT,
   RepoName,
@@ -22,6 +20,10 @@
 import {GerritView} from '../services/router/router-model';
 import {addQuotesWhen} from './string-util';
 import {AttemptChoice} from '../models/checks/checks-util';
+import {GroupDetailView, GroupViewState} from '../models/views/group';
+import {DashboardViewState} from '../models/views/dashboard';
+import {RepoDetailView, RepoViewState} from '../models/views/repo';
+import {SettingsViewState} from '../models/views/settings';
 
 export interface DashboardSection {
   name: string;
@@ -32,20 +34,6 @@
   results?: ChangeInfo[];
 }
 
-export enum GroupDetailView {
-  MEMBERS = 'members',
-  LOG = 'log',
-}
-
-export enum RepoDetailView {
-  GENERAL = 'general',
-  ACCESS = 'access',
-  BRANCHES = 'branches',
-  COMMANDS = 'commands',
-  DASHBOARDS = 'dashboards',
-  TAGS = 'tags',
-}
-
 export interface GenerateUrlSearchViewParameters {
   view: GerritView.SEARCH;
   query?: string;
@@ -79,30 +67,6 @@
   usp?: string;
 }
 
-export interface GenerateUrlRepoViewParameters {
-  view: GerritView.REPO;
-  repoName: RepoName;
-  detail?: RepoDetailView;
-}
-
-export interface GenerateUrlDashboardViewParameters {
-  view: GerritView.DASHBOARD;
-  user?: string;
-  repo?: RepoName;
-  dashboard?: DashboardId;
-
-  // TODO(TS): properties bellow aren't set anywhere, try to remove
-  project?: RepoName;
-  sections?: DashboardSection[];
-  title?: string;
-}
-
-export interface GenerateUrlGroupViewParameters {
-  view: GerritView.GROUP;
-  groupId: GroupId;
-  detail?: GroupDetailView;
-}
-
 export interface GenerateUrlEditViewParameters {
   view: GerritView.EDIT;
   changeNum: NumericChangeId;
@@ -112,14 +76,6 @@
   lineNum?: number | string;
 }
 
-export interface GenerateUrlRootViewParameters {
-  view: GerritView.ROOT;
-}
-
-export interface GenerateUrlSettingsViewParameters {
-  view: GerritView.SETTINGS;
-}
-
 export interface GenerateUrlDiffViewParameters {
   view: GerritView.DIFF;
   changeNum: NumericChangeId;
@@ -137,12 +93,11 @@
 export type GenerateUrlParameters =
   | GenerateUrlSearchViewParameters
   | GenerateUrlChangeViewParameters
-  | GenerateUrlRepoViewParameters
-  | GenerateUrlDashboardViewParameters
-  | GenerateUrlGroupViewParameters
+  | RepoViewState
+  | DashboardViewState
+  | GroupViewState
   | GenerateUrlEditViewParameters
-  | GenerateUrlRootViewParameters
-  | GenerateUrlSettingsViewParameters
+  | SettingsViewState
   | GenerateUrlDiffViewParameters;
 
 export function isGenerateUrlChangeViewParameters(
@@ -167,6 +122,10 @@
   getPatchRangeExpression,
 };
 
+export function rootUrl() {
+  return `${getBaseUrl()}/`;
+}
+
 export function generateUrl(params: GenerateUrlParameters) {
   const base = getBaseUrl();
   let url = '';
@@ -186,8 +145,6 @@
     url = generateGroupUrl(params);
   } else if (params.view === GerritView.REPO) {
     url = generateRepoUrl(params);
-  } else if (params.view === GerritView.ROOT) {
-    url = '/';
   } else if (params.view === GerritView.SETTINGS) {
     url = generateSettingsUrl();
   } else {
@@ -265,8 +222,8 @@
   });
 }
 
-function generateDashboardUrl(params: GenerateUrlDashboardViewParameters) {
-  const repoName = params.repo || params.project || undefined;
+function generateDashboardUrl(params: DashboardViewState) {
+  const repoName = params.project || undefined;
   if (params.sections) {
     // Custom dashboard.
     const queryParams = sectionsToEncodedParams(params.sections, repoName);
@@ -374,7 +331,7 @@
   }
 }
 
-function generateGroupUrl(params: GenerateUrlGroupViewParameters) {
+function generateGroupUrl(params: GroupViewState) {
   let url = `/admin/groups/${encodeURL(`${params.groupId}`, true)}`;
   if (params.detail === GroupDetailView.MEMBERS) {
     url += ',members';
@@ -384,8 +341,8 @@
   return url;
 }
 
-function generateRepoUrl(params: GenerateUrlRepoViewParameters) {
-  let url = `/admin/repos/${encodeURL(`${params.repoName}`, true)}`;
+function generateRepoUrl(params: RepoViewState) {
+  let url = `/admin/repos/${encodeURL(`${params.repo}`, true)}`;
   if (params.detail === RepoDetailView.GENERAL) {
     url += ',general';
   } else if (params.detail === RepoDetailView.ACCESS) {
diff --git a/polygerrit-ui/app/utils/router-util_test.ts b/polygerrit-ui/app/utils/router-util_test.ts
index 60ac87b..161725c 100644
--- a/polygerrit-ui/app/utils/router-util_test.ts
+++ b/polygerrit-ui/app/utils/router-util_test.ts
@@ -15,18 +15,17 @@
   GroupId,
 } from '../api/rest-api';
 import {PatchRangeParams} from '../elements/core/gr-router/gr-router';
+import {DashboardViewState} from '../models/views/dashboard';
+import {GroupDetailView, GroupViewState} from '../models/views/group';
 import {GerritView} from '../services/router/router-model';
 import '../test/common-test-setup';
 import {DashboardId} from '../types/common';
 import {
   generateUrl,
   GenerateUrlChangeViewParameters,
-  GenerateUrlDashboardViewParameters,
   GenerateUrlDiffViewParameters,
   GenerateUrlEditViewParameters,
-  GenerateUrlGroupViewParameters,
   GenerateUrlSearchViewParameters,
-  GroupDetailView,
   TEST_ONLY,
 } from './router-util';
 
@@ -193,14 +192,14 @@
 
     suite('dashboard', () => {
       test('self dashboard', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
         };
         assert.equal(generateUrl(params), '/dashboard/self');
       });
 
       test('user dashboard', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
           user: 'user',
         };
@@ -208,7 +207,7 @@
       });
 
       test('custom self dashboard, no title', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
           sections: [
             {name: 'section 1', query: 'query 1'},
@@ -222,13 +221,13 @@
       });
 
       test('custom repo dashboard', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
           sections: [
             {name: 'section 1', query: 'query 1 ${project}'},
             {name: 'section 2', query: 'query 2 ${repo}'},
           ],
-          repo: 'repo-name' as RepoName,
+          project: 'repo-name' as RepoName,
         };
         assert.equal(
           generateUrl(params),
@@ -238,7 +237,7 @@
       });
 
       test('custom user dashboard, with title', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
           user: 'user',
           sections: [{name: 'name', query: 'query'}],
@@ -251,9 +250,9 @@
       });
 
       test('repo dashboard', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
-          repo: 'gerrit/repo' as RepoName,
+          project: 'gerrit/repo' as RepoName,
           dashboard: 'default:main' as DashboardId,
         };
         assert.equal(
@@ -263,7 +262,7 @@
       });
 
       test('project dashboard (legacy)', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
           project: 'gerrit/project' as RepoName,
           dashboard: 'default:main' as DashboardId,
@@ -277,7 +276,7 @@
 
     suite('groups', () => {
       test('group info', () => {
-        const params: GenerateUrlGroupViewParameters = {
+        const params: GroupViewState = {
           view: GerritView.GROUP,
           groupId: '1234' as GroupId,
         };
@@ -285,7 +284,7 @@
       });
 
       test('group members', () => {
-        const params: GenerateUrlGroupViewParameters = {
+        const params: GroupViewState = {
           view: GerritView.GROUP,
           groupId: '1234' as GroupId,
           detail: 'members' as GroupDetailView,
@@ -294,7 +293,7 @@
       });
 
       test('group audit log', () => {
-        const params: GenerateUrlGroupViewParameters = {
+        const params: GroupViewState = {
           view: GerritView.GROUP,
           groupId: '1234' as GroupId,
           detail: 'log' as GroupDetailView,
