diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md
index e8b6f770fcd84329c5c2a07bc6ea07566b3a4798..cfc627defa98bd12b43abf76e651ba9d82ca1c65 100644
--- a/docs/usage/configuration-options.md
+++ b/docs/usage/configuration-options.md
@@ -1331,19 +1331,20 @@ For example, if your `package.json` specifies a value for `left-pad` of `^1.0.0`
 
 This feature supports simple caret (`^`) and tilde (`~`) ranges only, like `^1.0.0` and `~1.0.0`.
 
-## rebaseConflictedPrs
-
-This field defaults to `true` which means Renovate will rebase whenever there is a merge conflict with the master branch. However, this default behavior may result in costing a lot of CI cycles. If you wish to disable auto-rebasing in case of merge conflicts with the master branch, configure it's value to `false`.
-
 ## rebaseLabel
 
-On GitHub it is possible to add a label to a PR to manually request Renovate to recreate/rebase it. By default this label is `"rebase"` however you can configure it to anything you want by changing this `rebaseLabel` field.
+On supported platforms it is possible to add a label to a PR to manually request Renovate to recreate/rebase it. By default this label is `"rebase"` however you can configure it to anything you want by changing this `rebaseLabel` field.
+
+## rebaseWhen
 
-## rebaseStalePrs
+Possible values and meanings:
 
-This field defaults to `null` because it has the potential to create a lot of noise and additional builds to your repository. If you enable it to `true`, it means each Renovate branch will be updated whenever the base branch has changed. If enabled, this also means that whenever a Renovate PR is merged (whether by automerge or manually via GitHub web) then any other existing Renovate PRs will then need to get rebased and retested.
+- `auto`: Renovate will autodetect the best setting. Defaults to `conflicted` unless the repository has a setting requiring PRs to be up to date with the base branch.
+- `never`: Renovate will never rebase the branch.
+- `conflicted`: Renovate will rebase only if the branch is conflicted.
+- `behind-base-branch`: Renovate will rebase whenever the branch falls 1 or more commit behind its base branch.
 
-If you configure it to `false` then that will take precedence - it means Renovate will ignore if you have configured the repository for "Require branches to be up to date before merging" in Branch Protection. However if you have configured it to `false` _and_ configured `branch` automerge then Renovate will still rebase as necessary for that.
+Note: this field replaces the previous fields of `rebaseConflictedPrs` and `rebaseStalePrs`.
 
 ## recreateClosed
 
diff --git a/docs/usage/updating-rebasing.md b/docs/usage/updating-rebasing.md
index 36206b355d18d43ae6bb565935c0105edc6eba14..98493b73ef70c29a51b4f237926974d4cc90618c 100644
--- a/docs/usage/updating-rebasing.md
+++ b/docs/usage/updating-rebasing.md
@@ -15,14 +15,14 @@ First of all, here is the one time when Renovate _won't_ update branches. If you
 
 ## Rebasing Conflicted PRs
 
-If new commits to the base branch - such as merging another Renovate PR - result in an open Renovate PR having merge conflicts, then Renovate will recreate ("rebase") any conflicted PRs. This applies both to commits to dependency files such as `package.json` as well as lock files such as `yarn.lock`. You should not ever need to resolve such conflicts manually.
+If new commits to the base branch - such as merging another Renovate PR - result in an open Renovate PR having merge conflicts, then Renovate will recreate ("rebase") any conflicted PRs. This applies both to commits to dependency files such as `package.json` as well as lock files such as `yarn.lock`. You should not ever need to resolve such conflicts manually. You can disable this functionality by configuring `"rebaseWhen": "never"` (not recommended);
 
-## Rebasing Stale Branches
+## Rebasing Out-of-date Branches
 
 There are two cases where Renovate will rebase its branches off the base branch every time they are out of date:
 
-1.  If you manually configure `"rebaseStalePrs"` to be true.
-2.  If you have enabled "Require branches to be up to date before merging" on GitHub protected branches settings
+1.  If you manually configure `"rebaseWhen": "behind-base-branch"`.
+2.  If you have enabled "Require branches to be up to date before merging" on GitHub protected branches settings, and `rebaseWhen` has default value `"auto"`.
 
 In that case Renovate PRs will be continuously rebased off the repository's base branch whenever necessary, even if the PRs are not conflicted.
 
@@ -35,10 +35,10 @@ If an existing PR is open to upgrade dependency "foo" to v1.1.0 and then v1.1.1
 
 ## Manual rebasing
 
-In GitHub, it is possible to manually request that Renovate rebase a PR by adding the label "rebase" to it. This label name is also configurable via the `rebaseLabel` config option too.
+It is possible to manually request that Renovate rebase a PR by ticking a rebase/retry checkbox on GitHub or GitLab, or by adding the label "rebase" to a Renovate PR. This label name is also configurable via the `rebaseLabel` config option too.
 
 If you apply this label then Renovate will regenerate its commit for the branch, even if the branch has been modified. Therefore it is useful in situations such as:
 
-- If a branch is stale but you don't have `rebaseStalePrs` enabled
+- If a branch is stale but you don't have `rebaseWhen=behind-base-branch` enabled
 - If a branch has been edited and you wish to discard the edits and have Renovate create it again
 - If a branch was created with an error (e.g. lockfile generation) and you wish to have it retried.
diff --git a/lib/config/common.ts b/lib/config/common.ts
index 8fc2d2baf6795e49394dcdfdb647730b017c3cbc..21a0ce348ce5774ae147fea2def270985adf9347 100644
--- a/lib/config/common.ts
+++ b/lib/config/common.ts
@@ -18,7 +18,7 @@ export interface RenovateSharedConfig {
   platform?: string;
   productLinks?: Record<string, string>;
   prPriority?: number;
-  rebaseStalePrs?: boolean;
+  rebaseWhen?: string;
   recreateClosed?: boolean;
   requiredStatusChecks?: string[];
   schedule?: string[];
diff --git a/lib/config/definitions.ts b/lib/config/definitions.ts
index 4dc9d6d9db5cf1ec8b3d56bb4f2797c14652c781..1ca34f526534ab3356ee41cf673026ad933fa2d1 100644
--- a/lib/config/definitions.ts
+++ b/lib/config/definitions.ts
@@ -972,7 +972,7 @@ const options: RenovateOptions[] = [
     default: {
       unpublishSafe: false,
       recreateClosed: true,
-      rebaseStalePrs: true,
+      rebaseWhen: 'behind-base-branch',
       groupName: 'Pin Dependencies',
       groupSlug: 'pin-dependencies',
       commitMessageAction: 'Pin',
@@ -1032,16 +1032,11 @@ const options: RenovateOptions[] = [
     default: false,
   },
   {
-    name: 'rebaseConflictedPrs',
-    description: 'Auto-rebase when there is conflict in PRs',
-    type: 'boolean',
-    default: true,
-  },
-  {
-    name: 'rebaseStalePrs',
-    description: 'Rebase any PRs that are not up-to-date with the base branch',
-    type: 'boolean',
-    default: null,
+    name: 'rebaseWhen',
+    description: 'Control when Renovate decides to rebase an existing branch',
+    type: 'string',
+    allowedValues: ['auto', 'never', 'conflicted', 'behind-base-branch'],
+    default: 'auto',
   },
   {
     name: 'rebaseLabel',
diff --git a/lib/config/migration.ts b/lib/config/migration.ts
index 19db6a85397b8c1138b2b2646972f9ab8368a4ec..7ea887b262c1f06ec10fc32aaca43a87dd9e74bd 100644
--- a/lib/config/migration.ts
+++ b/lib/config/migration.ts
@@ -133,6 +133,18 @@ export function migrateConfig(
       } else if (key === 'gitFs') {
         isMigrated = true;
         delete migratedConfig.gitFs;
+      } else if (key === 'rebaseStalePrs') {
+        isMigrated = true;
+        delete migratedConfig.rebaseStalePrs;
+        if (!migratedConfig.rebaseWhen) {
+          if (val === null) migratedConfig.rebaseWhen = 'auto';
+          if (val === true) migratedConfig.rebaseWhen = 'behind-base-branch';
+          if (val === false) migratedConfig.rebaseWhen = 'conflicted';
+        }
+      } else if (key === 'rebaseConflictedPrs') {
+        isMigrated = true;
+        delete migratedConfig.rebaseConflictedPrs;
+        if (val === false) migratedConfig.rebaseWhen = 'never';
       } else if (key === 'exposeEnv') {
         isMigrated = true;
         delete migratedConfig.exposeEnv;
diff --git a/lib/workers/branch/parent.ts b/lib/workers/branch/parent.ts
index 7c1a4ea331c9a1917104f20a667b3d6d05bf791c..62e6323aa0ed8791538afb8354a2ae55088979fb 100644
--- a/lib/workers/branch/parent.ts
+++ b/lib/workers/branch/parent.ts
@@ -43,8 +43,8 @@ export async function getParentBranch(
   }
 
   if (
-    config.rebaseStalePrs ||
-    (config.rebaseStalePrs === null && (await platform.getRepoForceRebase())) ||
+    config.rebaseWhen === 'behind-base-branch' ||
+    (config.rebaseWhen === 'auto' && (await platform.getRepoForceRebase())) ||
     (config.automerge && config.automergeType === 'branch')
   ) {
     const isBranchStale = await platform.isBranchStale(branchName);
@@ -66,8 +66,8 @@ export async function getParentBranch(
 
     if (!pr.isModified) {
       logger.info(`Branch is not mergeable and needs rebasing`);
-      if (!config.rebaseConflictedPrs) {
-        logger.info('rebaseConflictedPrs is disabled');
+      if (config.rebaseWhen === 'never') {
+        logger.info('Rebasing disabled by config');
         return { parentBranch: branchName, isModified: false };
       }
       // Setting parentBranch back to undefined means that we'll use the default branch
diff --git a/lib/workers/pr/body/config-description.ts b/lib/workers/pr/body/config-description.ts
index 2ce0f7e3b76bb4945517c542b348930922f593c2..4ceb13a811f9b0627685a86f59e6cbece0ba340f 100644
--- a/lib/workers/pr/body/config-description.ts
+++ b/lib/workers/pr/body/config-description.ts
@@ -42,8 +42,10 @@ export async function getPrConfigDescription(
   }
   prBody += '\n\n';
   prBody += emojify(':recycle: **Rebasing**: ');
-  if (config.rebaseStalePrs) {
-    prBody += 'Whenever PR is stale';
+  if (config.rebaseWhen === 'behind-base-branch') {
+    prBody += 'Whenever PR falls behind the base branch';
+  } else if (config.rebaseWhen === 'never') {
+    prBody += 'Never';
   } else {
     prBody += 'Whenever PR becomes conflicted';
   }
diff --git a/test/config/__snapshots__/migration.spec.ts.snap b/test/config/__snapshots__/migration.spec.ts.snap
index 72831385e7b8770e4f5f3d84c02e953bc01cd32f..3112cf4c4da49463223a247e1c6e6a25bcd8e1cc 100644
--- a/test/config/__snapshots__/migration.spec.ts.snap
+++ b/test/config/__snapshots__/migration.spec.ts.snap
@@ -125,8 +125,15 @@ Object {
   "patch": Object {
     "automerge": true,
   },
+  "pip_setup": Object {
+    "rebaseWhen": "never",
+  },
+  "pipenv": Object {
+    "rebaseWhen": "conflicted",
+  },
   "platform": "github",
   "poetry": Object {
+    "rebaseWhen": "behind-base-branch",
     "versioning": "pep440",
   },
   "postUpdateOptions": Array [
@@ -134,6 +141,7 @@ Object {
   ],
   "prTitle": "{{#if semanticCommitType}}{{semanticCommitType}}{{#if semanticCommitScope}}({{semanticCommitScope}}){{/if}}: {{/if}}some pr title",
   "rangeStrategy": "bump",
+  "rebaseWhen": "auto",
   "schedule": "on the first day of the month",
   "semanticCommitScope": "deps",
   "semanticCommitType": "fix",
diff --git a/test/config/__snapshots__/presets.spec.ts.snap b/test/config/__snapshots__/presets.spec.ts.snap
index eb88fd86d1f2acf89706fa35498fdec5b7ddf656..47698dfb1c012c1979557e782f928153467a98dd 100644
--- a/test/config/__snapshots__/presets.spec.ts.snap
+++ b/test/config/__snapshots__/presets.spec.ts.snap
@@ -329,7 +329,7 @@ Object {
     },
   ],
   "prCreation": "immediate",
-  "rebaseStalePrs": true,
+  "rebaseWhen": "behind-base-branch",
   "requiredStatusChecks": Array [],
   "respectLatest": true,
   "schedule": Array [
diff --git a/test/config/migration.spec.ts b/test/config/migration.spec.ts
index a04b72e2a4fdc292e3993c6064c4442b1bbbea7a..2eb9ca263b8a4c0a12a8601e2e759a3de531bfd2 100644
--- a/test/config/migration.spec.ts
+++ b/test/config/migration.spec.ts
@@ -42,8 +42,18 @@ describe('config/migration', () => {
           enabled: true,
         },
         poetry: {
+          rebaseStalePrs: true,
           versionScheme: 'pep440',
         },
+        pipenv: {
+          rebaseStalePrs: false,
+          rebaseConflictedPrs: true,
+        },
+        pip_setup: {
+          rebaseConflictedPrs: false,
+        },
+        rebaseStalePrs: null,
+        rebaseConflictedPrs: true,
         meteor: true,
         autodiscover: 'true' as never,
         schedule: 'on the last day of the month' as never,
diff --git a/test/workers/branch/parent.spec.ts b/test/workers/branch/parent.spec.ts
index 9845839406b237382e7e03d3bff2b4f04898f827..91d5a7cb85a9dab1c8ef6518851b45f60b3df0e0 100644
--- a/test/workers/branch/parent.spec.ts
+++ b/test/workers/branch/parent.spec.ts
@@ -11,7 +11,7 @@ describe('workers/branch/parent', () => {
       config = {
         branchName: 'renovate/some-branch',
         rebaseLabel: 'rebase',
-        rebaseConflictedPrs: true,
+        rebaseWhen: 'behind-base-branch',
       };
     });
     afterEach(() => {
@@ -47,8 +47,8 @@ describe('workers/branch/parent', () => {
       const res = await getParentBranch(config);
       expect(res.parentBranch).toBe(config.branchName);
     });
-    it('returns branchName if unmergeable and can rebase, but rebaseConflictedPrs is disabled', async () => {
-      config.rebaseConflictedPrs = false;
+    it('returns branchName if unmergeable and can rebase, but rebaseWhen is never', async () => {
+      config.rebaseWhen = 'never';
       platform.branchExists.mockResolvedValueOnce(true);
       platform.getBranchPr.mockResolvedValueOnce({
         ...pr,
@@ -112,8 +112,8 @@ describe('workers/branch/parent', () => {
       const res = await getParentBranch(config);
       expect(res.parentBranch).toBeUndefined();
     });
-    it('returns branch if rebaseStalePrs enabled but cannot rebase', async () => {
-      config.rebaseStalePrs = true;
+    it('returns branch if rebaseWhen=behind-base-branch but cannot rebase', async () => {
+      config.rebaseWhen = 'behind-base-branch';
       platform.branchExists.mockResolvedValueOnce(true);
       platform.isBranchStale.mockResolvedValueOnce(true);
       platform.getBranchPr.mockResolvedValueOnce({
diff --git a/test/workers/pr/__snapshots__/index.spec.ts.snap b/test/workers/pr/__snapshots__/index.spec.ts.snap
index 4f5895b52a2c1a07b01b119c7b3b069b1d844c4b..1630b0af163409706acce0482e9f64e393ae6263 100644
--- a/test/workers/pr/__snapshots__/index.spec.ts.snap
+++ b/test/workers/pr/__snapshots__/index.spec.ts.snap
@@ -48,7 +48,7 @@ Array [
       "gitLabAutomerge": false,
       "statusCheckVerify": false,
     },
-    "prBody": "This PR contains the following updates:\\n\\n| Package | Type | Update | Change |\\n|---|---|---|---|\\n| [dummy](https://dummy.com) ([source](https://github.com/renovateapp/dummy), [changelog](https://github.com/renovateapp/dummy/changelog.md)) | devDependencies | pin | \`1.0.0\` -> \`1.1.0\` |\\n\\n:pushpin: **Important**: Renovate will wait until you have merged this Pin PR before creating any *upgrade* PRs for the affected packages. Add the preset \`:preserveSemverRanges\` your config if you instead don't wish to pin dependencies.\\n\\n---\\n\\n### Release Notes\\n\\n<details>\\n<summary>renovateapp/dummy</summary>\\n\\n### [\`v1.1.0\`](https://github.com/renovateapp/dummy/compare/v1.0.0...v1.1.0)\\n\\n[Compare Source](https://github.com/renovateapp/dummy/compare/v1.0.0...v1.1.0)\\n\\n</details>\\n\\n---\\n\\n### Renovate configuration\\n\\n:date: **Schedule**: \\"before 5am\\" in timezone some timezone.\\n\\n:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.\\n\\n:recycle: **Rebasing**: Whenever PR is stale, or if you tick the rebase/retry checkbox below.\\n\\n:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.\\n\\n---\\n\\n - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box",
+    "prBody": "This PR contains the following updates:\\n\\n| Package | Type | Update | Change |\\n|---|---|---|---|\\n| [dummy](https://dummy.com) ([source](https://github.com/renovateapp/dummy), [changelog](https://github.com/renovateapp/dummy/changelog.md)) | devDependencies | pin | \`1.0.0\` -> \`1.1.0\` |\\n\\n:pushpin: **Important**: Renovate will wait until you have merged this Pin PR before creating any *upgrade* PRs for the affected packages. Add the preset \`:preserveSemverRanges\` your config if you instead don't wish to pin dependencies.\\n\\n---\\n\\n### Release Notes\\n\\n<details>\\n<summary>renovateapp/dummy</summary>\\n\\n### [\`v1.1.0\`](https://github.com/renovateapp/dummy/compare/v1.0.0...v1.1.0)\\n\\n[Compare Source](https://github.com/renovateapp/dummy/compare/v1.0.0...v1.1.0)\\n\\n</details>\\n\\n---\\n\\n### Renovate configuration\\n\\n:date: **Schedule**: \\"before 5am\\" in timezone some timezone.\\n\\n:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.\\n\\n:recycle: **Rebasing**: Whenever PR falls behind the base branch, or if you tick the rebase/retry checkbox below.\\n\\n:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.\\n\\n---\\n\\n - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box",
     "prTitle": "Update dependency dummy to v1.1.0",
     "useDefaultBranch": false,
   },
@@ -82,7 +82,7 @@ Array [
       "gitLabAutomerge": false,
       "statusCheckVerify": false,
     },
-    "prBody": "This PR contains the following updates:\\n\\n| Package | Type | Update | Change |\\n|---|---|---|---|\\n| [dummy](https://dummy.com) ([source](https://github.com/renovateapp/dummy), [changelog](https://github.com/renovateapp/dummy/changelog.md)) | devDependencies | lockFileMaintenance | \`1.0.0\` -> \`1.1.0\` |\\n| a |  |  | \`zzzzzz\` -> \`aaaaaaa\` |\\n| b |  | pin | \`some_old_value\` -> \`some_new_value\` |\\n| c |  |  | \`\` -> \`\` |\\n| d |  | lockFileMaintenance | \`\` -> \`\` |\\n\\nnote 1\\n\\nnote 2\\n\\n:warning: Release Notes retrieval for this PR were skipped because no github.com credentials were available.\\nTo add credentials for github.com to your config, please see [this guide](https://docs.renovatebot.com/install-gitlab-app/#configuring-a-token-for-githubcom-hosted-release-notes).\\n\\n:abcd: If you wish to disable git hash updates, add \`\\":disableDigestUpdates\\"\` to the extends array in your config.\\n\\n:wrench: This Pull Request updates lock files to use the latest dependency versions.\\n\\n---\\n\\n### Release Notes\\n\\n<details>\\n<summary>renovateapp/dummy</summary>\\n\\n### [\`v1.1.0\`](https://github.com/renovateapp/dummy/compare/v1.0.0...v1.1.0)\\n\\n[Compare Source](https://github.com/renovateapp/dummy/compare/v1.0.0...v1.1.0)\\n\\n</details>\\n\\n<details>\\n<summary>renovateapp/dummy</summary>\\n\\n</details>\\n\\n---\\n\\n### Renovate configuration\\n\\n:date: **Schedule**: At any time (no schedule defined).\\n\\n:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.\\n\\n:recycle: **Rebasing**: Whenever PR becomes conflicted, or if you tick the rebase/retry checkbox below.\\n\\n:ghost: **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/config-help/issues) if that's undesired.\\n\\n---\\n\\n - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box",
+    "prBody": "This PR contains the following updates:\\n\\n| Package | Type | Update | Change |\\n|---|---|---|---|\\n| [dummy](https://dummy.com) ([source](https://github.com/renovateapp/dummy), [changelog](https://github.com/renovateapp/dummy/changelog.md)) | devDependencies | lockFileMaintenance | \`1.0.0\` -> \`1.1.0\` |\\n| a |  |  | \`zzzzzz\` -> \`aaaaaaa\` |\\n| b |  | pin | \`some_old_value\` -> \`some_new_value\` |\\n| c |  |  | \`\` -> \`\` |\\n| d |  | lockFileMaintenance | \`\` -> \`\` |\\n\\nnote 1\\n\\nnote 2\\n\\n:warning: Release Notes retrieval for this PR were skipped because no github.com credentials were available.\\nTo add credentials for github.com to your config, please see [this guide](https://docs.renovatebot.com/install-gitlab-app/#configuring-a-token-for-githubcom-hosted-release-notes).\\n\\n:abcd: If you wish to disable git hash updates, add \`\\":disableDigestUpdates\\"\` to the extends array in your config.\\n\\n:wrench: This Pull Request updates lock files to use the latest dependency versions.\\n\\n---\\n\\n### Release Notes\\n\\n<details>\\n<summary>renovateapp/dummy</summary>\\n\\n### [\`v1.1.0\`](https://github.com/renovateapp/dummy/compare/v1.0.0...v1.1.0)\\n\\n[Compare Source](https://github.com/renovateapp/dummy/compare/v1.0.0...v1.1.0)\\n\\n</details>\\n\\n<details>\\n<summary>renovateapp/dummy</summary>\\n\\n</details>\\n\\n---\\n\\n### Renovate configuration\\n\\n:date: **Schedule**: At any time (no schedule defined).\\n\\n:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.\\n\\n:recycle: **Rebasing**: Never, or if you tick the rebase/retry checkbox below.\\n\\n:ghost: **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/config-help/issues) if that's undesired.\\n\\n---\\n\\n - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box",
     "prTitle": "Update dependency dummy to v1.1.0",
     "useDefaultBranch": false,
   },
diff --git a/test/workers/pr/index.spec.ts b/test/workers/pr/index.spec.ts
index cdf4a41c5dc80f742811e460a07dda85a29a4d5b..c5d09d976bf3450ac1c7e335ed9307314109c390 100644
--- a/test/workers/pr/index.spec.ts
+++ b/test/workers/pr/index.spec.ts
@@ -215,6 +215,7 @@ describe('workers/pr', () => {
       ]);
       config.updateType = 'lockFileMaintenance';
       config.recreateClosed = true;
+      config.rebaseWhen = 'never';
       const pr = await prWorker.ensurePr(config);
       expect(pr).toMatchObject({ displayNumber: 'New Pull Request' });
       expect(platform.createPr.mock.calls[0]).toMatchSnapshot();
@@ -226,7 +227,7 @@ describe('workers/pr', () => {
       config.updateType = 'pin';
       config.schedule = 'before 5am';
       config.timezone = 'some timezone';
-      config.rebaseStalePrs = true;
+      config.rebaseWhen = 'behind-base-branch';
       const pr = await prWorker.ensurePr(config);
       expect(pr).toMatchObject({ displayNumber: 'New Pull Request' });
       expect(platform.createPr.mock.calls[0]).toMatchSnapshot();