diff --git a/package.json b/package.json
index 213244c3..b69fef97 100644
--- a/package.json
+++ b/package.json
@@ -36,7 +36,7 @@
     "gh-pages": "^1.0.0",
     "jsdoc": "^3.5.5",
     "json": "^9.0.4",
-    "puppeteer-core": "^2.0.0",
+    "playwright-chromium": "^1.0.1",
     "scratch-vm": "0.2.0-prerelease.20191227164934",
     "tap": "^11.0.0",
     "travis-after-all": "^1.4.4",
diff --git a/test/helper/download-chromium.js b/test/helper/download-chromium.js
deleted file mode 100644
index dc475a15..00000000
--- a/test/helper/download-chromium.js
+++ /dev/null
@@ -1,24 +0,0 @@
-const packageJson = require('puppeteer-core/package.json');
-const puppeteer = require('puppeteer-core');
-
-const fetcher = puppeteer.createBrowserFetcher();
-const revision = packageJson.puppeteer.chromium_revision;
-
-/* eslint-disable no-console */
-module.exports = async () => {
-    const downloadedRevisions = await fetcher.localRevisions();
-    if (downloadedRevisions.indexOf(revision) !== -1) {
-        console.log('Chromium already downloaded');
-        return Promise.resolve();
-    }
-
-    console.log('Downloading Chromium...');
-    return fetcher.download(revision)
-        .then(() => {
-            console.log('Downloaded Chromium successfully');
-        })
-        .catch(error => {
-            console.error(error);
-            process.exit(1);
-        });
-};
diff --git a/test/integration/pick-tests.js b/test/integration/pick-tests.js
index a36ee150..4012bcda 100644
--- a/test/integration/pick-tests.js
+++ b/test/integration/pick-tests.js
@@ -1,10 +1,8 @@
 /* global vm, render, Promise */
-const puppeteer = require('puppeteer-core');
+const {chromium} = require('playwright-chromium');
 const test = require('tap').test;
 const path = require('path');
 
-const downloadChromium = require('../helper/download-chromium');
-
 const indexHTML = path.resolve(__dirname, 'index.html');
 const testDir = (...args) => path.resolve(__dirname, 'pick-tests', ...args);
 
@@ -12,7 +10,7 @@ const runFile = async (file, action, page, script) => {
     // start each test by going to the index.html, and loading the scratch file
     await page.goto(`file://${indexHTML}`);
     const fileInput = await page.$('#file');
-    await fileInput.uploadFile(testDir(file));
+    await fileInput.setInputFiles(testDir(file));
 
     await page.evaluate(() =>
         // `loadFile` is defined on the page itself.
@@ -24,8 +22,7 @@ const runFile = async (file, action, page, script) => {
 
 // immediately invoked async function to let us wait for each test to finish before starting the next.
 (async () => {
-    await downloadChromium();
-    const browser = await puppeteer.launch();
+    const browser = await chromium.launch();
     const page = await browser.newPage();
 
     const testOperation = async function (name, action, expect) {
diff --git a/test/integration/scratch-tests.js b/test/integration/scratch-tests.js
index 9d3188a3..bad0774d 100644
--- a/test/integration/scratch-tests.js
+++ b/test/integration/scratch-tests.js
@@ -1,11 +1,9 @@
 /* global vm, Promise */
-const puppeteer = require('puppeteer-core');
+const {chromium} = require('playwright-chromium');
 const test = require('tap').test;
 const path = require('path');
 const fs = require('fs');
 
-const downloadChromium = require('../helper/download-chromium');
-
 const indexHTML = path.resolve(__dirname, 'index.html');
 const testDir = (...args) => path.resolve(__dirname, 'scratch-tests', ...args);
 
@@ -13,7 +11,7 @@ const testFile = (file, page) => test(file, async t => {
     // start each test by going to the index.html, and loading the scratch file
     await page.goto(`file://${indexHTML}`);
     const fileInput = await page.$('#file');
-    await fileInput.uploadFile(testDir(file));
+    await fileInput.setInputFiles(testDir(file));
     await page.evaluate(() =>
         // `loadFile` is defined on the page itself.
         // eslint-disable-next-line no-undef
@@ -107,8 +105,7 @@ const testFile = (file, page) => test(file, async t => {
 
 // immediately invoked async function to let us wait for each test to finish before starting the next.
 (async () => {
-    await downloadChromium();
-    const browser = await puppeteer.launch();
+    const browser = await chromium.launch();
     const page = await browser.newPage();
 
     const files = fs.readdirSync(testDir())