Skip to content

Instantly share code, notes, and snippets.

Tamlyn Rhodes tamlyn

View GitHub Profile
tamlyn /
Last active Aug 29, 2015
Warn when Gulp project dependencies need updating

How many times have you had this conversation?

"Hey, the project doesn't run on my machine any more."

"Have you tried running npm install?"


"Yeah, that fixed it, thanks"

tamlyn / .gitlab-ci.yml
Last active Apr 10, 2016
Dockerised Gitlab+Ci+Runner
View .gitlab-ci.yml
- npm install
script: npm test
tamlyn /
Last active Dec 7, 2016
Update and build all npm linked modules
pull-modules () {
# find symlinks in node_modules
for MODULE in $(find node_modules -type l -depth 1)
cd "$MODULE"
BRANCH=$(git rev-parse --abbrev-ref HEAD)
echo "Updating $MODULE ($BRANCH)..."

Keybase proof

I hereby claim:

  • I am tamlyn on github.
  • I am tamlyn ( on keybase.
  • I have a public key ASDtLiAyqvI_72LatdxQWOQhNvOLwyMJZtFU0PRAywgROAo

To claim this, I am signing this object:

tamlyn /
Created Nov 21, 2017
Slate Editor + Testcafe + WebKit

Test case

Bug when running Testcafe on Slate Editor inputs in Chrome/Safari

  1. Serve index.html on port 8080, e.g. http-server
  2. Run test, e.g. testcafe chrome test.js


New text is appended to input


tamlyn /
Last active Mar 5, 2018
Redacting fields in GraphQL with Apollo Server

Demo showing that by specifying a resolver for a scalar property, you can override the value.

This is useful for authorization as it means you can centrally check permissions per field. Your general resolvers can return whole objects without caring about which fields the current user may or may not be allowed to see.

tamlyn / testcafe.test.js
Created Mar 8, 2018
Example TestCafe test suite
View testcafe.test.js
// a very short TestCafe test suite
fixture('Admin user')
test('Create posts journey', t => {
const postTitle = 'Hello testing'
return t
.typeText(ReactSelector('PostCreator FormControl'), postTitle)
.click(ReactSelector('PostCreator Button'))
tamlyn / cypress.test.js
Created Mar 8, 2018
Example Cypress test suite
View cypress.test.js
// a very short Cypress test suite
describe('Admin user', () => {
it('Create posts journey', () => {
const postTitle = 'Hello testing'
cy.get('table tr:last label').should('contain', postTitle)
tamlyn /
Last active Mar 14, 2018
Start debugging a running node process

Shows a list of all node processes and lets you select which one you want to debug.

For example

1) 73428 node webpack/webpackDevServer.js
2) 73494 node build/dist/server.js
Select which process to debug: █
tamlyn / scrape.js
Last active Mar 23, 2018
Scrape statements from First Direct internet banking
View scrape.js
//////// CONFIG /////////
// your first direct user name
const username = ''
// your password (the one it asks for characters from)
const password = ''
// your memorable word
const memorable = ''
// set to false if you want to see the browser window as it runs
const headless = true
You can’t perform that action at this time.