Skip to content

Instantly share code, notes, and snippets.

@juanca
Created March 2, 2017 18:42
  • Star 127 You must be signed in to star a gist
  • Fork 8 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save juanca/5fd799c5b094e3e4f8b709cd101d7403 to your computer and use it in GitHub Desktop.
Github PR bookmarklet: Load all file diffs
javascript:
document.querySelectorAll('.load-diff-button').forEach(node => node.click())
@s0undt3ch
Copy link

Ah ha!

Array.from(document.querySelectorAll('.file')).filter(container => !container.querySelector('input.js-reviewed-checkbox:checked')).forEach(pnode => pnode.querySelectorAll('.load-diff-button').forEach(node => node.click()))

@AronNovak
Copy link

image
Well, use it carefully for large pull requests, you can easily end up with being blocked.

@s0undt3ch
Copy link

s0undt3ch commented May 4, 2021

Well, that really must be a massive PR.
Mine was ~1.6k files changed and I never hit that...

@AronNovak
Copy link

image
I was blocked for such a PR. But the block only took for a few minutes, not hours fortunately.

@juanca
Copy link
Author

juanca commented May 12, 2021

Woah, I guess we could batch the requests for x files at a time? Might seem a bit excessive for a bookmark though. Up to anyone else if they want to improve on the script.

@mcoberly2
Copy link

Thanks! I just put the Javascript in my browser URI field and voila!

@ScriptAutomate
Copy link

I had to modify a little:

Array.from(document.getElementsByClassName('load-diff-button')).map(button => button.click())`

https://gist.github.com/ScriptAutomate/a3240e8767f0e8e70644ebf3ca4b74fb#github-reviewing-prs-with-tons-of-modified-files-and-load-diff-buttons

@ryan-walsh-forte
Copy link

The original from 2017 above seems to work for me. Thanks!

@JetUni
Copy link

JetUni commented Nov 17, 2023

This didn't work for me on a PR with 1200 files changed, so I came up with this code that I ran from the console. I ran it with up to 50 files at a time (in the slice and splice) with great success!

// Find all files in the PR
let files = Array.from(document.querySelectorAll('.file'));
// Filter by the files that aren't reviewed already
let filteredFiles = files.filter(file => !file.querySelector('.js-reviewed-checkbox').checked);

// Load the next 10 files
filteredFiles.slice(0, 10).forEach(file => file.querySelector('.load-diff-button').click());

// After reviewing all 10 files, run these commands to mark them as reviewed
// and delete them from the filtered array
filteredFiles.slice(0, 10).forEach(file => file.querySelector('.js-reviewed-checkbox').click());
filteredFiles.splice(0, 10);

@HappyRashair
Copy link

Niiice :) It worked for 600 files / 3k lines changed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment