diff --git a/lib/api/gitlab.js b/lib/api/gitlab.js
index d22716f406cf01c48e3ff0b555bc1560635326e0..4ff6a291b9128154962f4041ad6a5d710516910c 100644
--- a/lib/api/gitlab.js
+++ b/lib/api/gitlab.js
@@ -53,20 +53,10 @@ async function getRepos(token, endpoint) {
     process.env.GITLAB_ENDPOINT = endpoint;
   }
   try {
-    let projects = [];
-    const perPage = 100;
-    let i = 1;
-    let res;
-    do {
-      const url = `projects?membership=true&per_page=100&page=${i}`;
-      res = await get(url);
-      projects = projects.concat(
-        res.body.map(repo => repo.path_with_namespace)
-      );
-      i += 1;
-    } while (res.body.length === perPage);
-    logger.info(`Discovered ${projects.length} project(s)`);
-    return projects;
+    const url = `projects?membership=true&per_page=100`;
+    const res = await get(url, { paginate: true });
+    logger.info(`Discovered ${res.body.length} project(s)`);
+    return res.body.map(repo => repo.path_with_namespace);
   } catch (err) {
     logger.error({ err }, `GitLab getRepos error`);
     throw err;
diff --git a/lib/workers/pr/index.js b/lib/workers/pr/index.js
index 3f9df72d49fc666f7988a66544afade5796bb16b..6040b29190a241476a8dc16d46e2fbd004b857ea 100644
--- a/lib/workers/pr/index.js
+++ b/lib/workers/pr/index.js
@@ -127,7 +127,7 @@ async function ensurePr(prConfig) {
 
   const prTitle = handlebars.compile(config.prTitle)(config);
   let prBody;
-  do {
+  async function trimPrBody() {
     let prBodyMarkdown = handlebars.compile(config.prBody)(config);
     const atUserRe = /[^`]@([a-z]+\/[a-z]+)/g;
     prBodyMarkdown = prBodyMarkdown.replace(atUserRe, '@​$1');
@@ -136,8 +136,13 @@ async function ensurePr(prConfig) {
     prBody = prBody.replace(issueRe, '$1#​$2$3');
     const backTickRe = /`([^/]*?)`/g;
     prBody = prBody.replace(backTickRe, '<code>$1</code>');
-    config.upgrades.pop();
-  } while (prBody.length > 250000);
+    // istanbul ignore if
+    if (prBody.length > 250000) {
+      config.upgrades.pop();
+      trimPrBody();
+    }
+  }
+  trimPrBody();
 
   try {
     // Check if existing PR exists
diff --git a/test/api/__snapshots__/gitlab.spec.js.snap b/test/api/__snapshots__/gitlab.spec.js.snap
index 4b1036017a31553ee16ec58f873b6f5e82b1d7be..b835b7f108a586259480c75ff06bf8d878bda88e 100644
--- a/test/api/__snapshots__/gitlab.spec.js.snap
+++ b/test/api/__snapshots__/gitlab.spec.js.snap
@@ -299,24 +299,13 @@ Object {
 }
 `;
 
-exports[`api/gitlab getRepos should fetch multiple pages 1`] = `
-Array [
-  Array [
-    "projects?membership=true&per_page=100&page=1",
-  ],
-  Array [
-    "projects?membership=true&per_page=100&page=2",
-  ],
-  Array [
-    "projects?membership=true&per_page=100&page=3",
-  ],
-]
-`;
-
 exports[`api/gitlab getRepos should return an array of repos 1`] = `
 Array [
   Array [
-    "projects?membership=true&per_page=100&page=1",
+    "projects?membership=true&per_page=100",
+    Object {
+      "paginate": true,
+    },
   ],
 ]
 `;
@@ -331,7 +320,10 @@ Array [
 exports[`api/gitlab getRepos should support a custom endpoint 1`] = `
 Array [
   Array [
-    "projects?membership=true&per_page=100&page=1",
+    "projects?membership=true&per_page=100",
+    Object {
+      "paginate": true,
+    },
   ],
 ]
 `;
diff --git a/test/api/gitlab.spec.js b/test/api/gitlab.spec.js
index 4ff05f92dcf95f635587fa5f4531313c957fb37e..78f6b5f133835ebd29c5343856b4dd50cb90d64d 100644
--- a/test/api/gitlab.spec.js
+++ b/test/api/gitlab.spec.js
@@ -61,25 +61,6 @@ describe('api/gitlab', () => {
       expect(get.mock.calls).toMatchSnapshot();
       expect(repos).toMatchSnapshot();
     });
-    it('should fetch multiple pages', async () => {
-      const repoCount = 250;
-      const projects = [];
-      for (let i = 0; i < repoCount; i += 1) {
-        projects.push({ path_with_namespace: `project${i}` });
-      }
-      get.mockImplementationOnce(() => ({
-        body: projects.slice(0, 100),
-      }));
-      get.mockImplementationOnce(() => ({
-        body: projects.slice(100, 200),
-      }));
-      get.mockImplementationOnce(() => ({
-        body: projects.slice(200),
-      }));
-      const repos = await gitlab.getRepos('sometoken');
-      expect(get.mock.calls).toMatchSnapshot();
-      expect(repos.length).toBe(repoCount);
-    });
   });
 
   async function initRepo(...args) {
diff --git a/test/config/index.spec.js b/test/config/index.spec.js
index e6a5a7bdf8e627801c88b6b456405a8dcd8db39b..2a4db9718c5e3fbd2d52ba3b69f09a894deec138 100644
--- a/test/config/index.spec.js
+++ b/test/config/index.spec.js
@@ -114,6 +114,7 @@ describe('config/index', () => {
         '--token=abc',
       ]);
       get.mockImplementationOnce(() => ({
+        headers: {},
         body: [
           {
             path_with_namespace: 'a/b',