All Projects → justinwoo → purescript-toppokki

justinwoo / purescript-toppokki

Licence: MIT License
A binding to puppeteer to drive headless Chrome.

Programming Languages

purescript
368 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects
Nix
1067 projects
shell
77523 projects

Projects that are alternatives of or similar to purescript-toppokki

Puppeteer Examples
Puppeteer example scripts for running Headless Chrome from Node.
Stars: ✭ 2,781 (+5693.75%)
Mutual labels:  headless-chrome, puppeteer
apify-cli
Apify command-line interface helps you create, develop, build and run Apify actors, and manage the Apify cloud platform.
Stars: ✭ 37 (-22.92%)
Mutual labels:  headless-chrome, puppeteer
CrawlerSamples
This is a Puppeteer+AngleSharp crawler console app samples, used C# 7.1 coding and dotnet core build.
Stars: ✭ 36 (-25%)
Mutual labels:  headless-chrome, puppeteer
puppeteer-email
Email automation driven by headless chrome.
Stars: ✭ 135 (+181.25%)
Mutual labels:  headless-chrome, puppeteer
throughout
🎪 End-to-end testing made simple (using Jest and Puppeteer)
Stars: ✭ 16 (-66.67%)
Mutual labels:  headless-chrome, puppeteer
Phantomas
Headless Chromium-based web performance metrics collector and monitoring tool
Stars: ✭ 2,191 (+4464.58%)
Mutual labels:  headless-chrome, puppeteer
puppet-master
Puppeteer as a service hosted on Saasify.
Stars: ✭ 25 (-47.92%)
Mutual labels:  headless-chrome, puppeteer
Awesome Puppeteer
A curated list of awesome puppeteer resources.
Stars: ✭ 1,728 (+3500%)
Mutual labels:  headless-chrome, puppeteer
puppeteer-autoscroll-down
Handle infinite scroll on websites by puppeteer
Stars: ✭ 40 (-16.67%)
Mutual labels:  headless-chrome, puppeteer
after-work.js
[DEPRECATED] CLI for automated tests in web projects.
Stars: ✭ 56 (+16.67%)
Mutual labels:  headless-chrome, puppeteer
Puppeteer Cluster
Puppeteer Pool, run a cluster of instances in parallel
Stars: ✭ 2,175 (+4431.25%)
Mutual labels:  headless-chrome, puppeteer
nest-puppeteer
Puppeteer (Headless Chrome) provider for Nest.js
Stars: ✭ 68 (+41.67%)
Mutual labels:  headless-chrome, puppeteer
Deno Puppeteer
A port of puppeteer running on Deno
Stars: ✭ 128 (+166.67%)
Mutual labels:  headless-chrome, puppeteer
Puppeteer Extra
💯 Teach puppeteer new tricks through plugins.
Stars: ✭ 3,397 (+6977.08%)
Mutual labels:  headless-chrome, puppeteer
Squidwarc
Squidwarc is a high fidelity, user scriptable, archival crawler that uses Chrome or Chromium with or without a head
Stars: ✭ 125 (+160.42%)
Mutual labels:  headless-chrome, puppeteer
puppeteer-lambda
Module for using Headless-Chrome by Puppeteer on AWS Lambda.
Stars: ✭ 117 (+143.75%)
Mutual labels:  headless-chrome, puppeteer
Puppeteer Functions
Puppeteer Firebase Functions demo
Stars: ✭ 75 (+56.25%)
Mutual labels:  headless-chrome, puppeteer
Puppeteer Dart
A Dart library to automate the Chrome browser over the DevTools Protocol. This is a port of the Puppeteer API
Stars: ✭ 92 (+91.67%)
Mutual labels:  headless-chrome, puppeteer
codepen-puppeteer
Use Puppeteer to download pens from Codepen.io as single html pages
Stars: ✭ 22 (-54.17%)
Mutual labels:  headless-chrome, puppeteer
puppeteer-instagram
Instagram automation driven by headless chrome.
Stars: ✭ 87 (+81.25%)
Mutual labels:  headless-chrome, puppeteer

PureScript-Toppokki

A binding to puppeteer to drive headless Chrome.

This module is "incomplete" (but useful for regular work projects), and you can help by submitting PRs. You may find that goto, pageWaitForSelector, click, and unsafeEvaluateStringFunction already provide the functionality you need.

Named for glorious Tteok-bokki.

Usage

Make sure Puppeteer is installed (e.g. npm i puppeteer).

module Main where

import Toppokki as T
import Prelude (bind, discard, (>))
import Effect.Aff (launchAff_)
import Test.Unit.Assert as Assert
import Data.String as String

main = launchAff_ do
  browser <- T.launch {}
  page <- T.newPage browser
  T.goto (T.URL "https://example.com") page
  content <- T.content page
  Assert.assert "content is non-empty string" (String.length content > 0)
  _ <- T.screenshot {path: "./test/test.png"} page
  _ <- T.pdf {path: "./test/test.pdf"} page
  T.close browser

More examples

You might also find this example from the vidtracker project useful:

downloadIconIfNotExist :: T.Browser -> Set String -> String -> Aff Unit
downloadIconIfNotExist browser existing name =
  unless (member name existing) do
    page <- T.newPage browser
    let
      name' = S.replace (S.Pattern " ") (S.Replacement "+") name
      pageURL = "https://duckduckgo.com/?iax=images&ia=images&q=" <> name' <> "+anime+wiki"
    T.goto (T.URL pageURL) page
    _ <- T.pageWaitForSelector (T.Selector ".tile--img__img") {} page
    result <- T.unsafeEvaluateStringFunction "document.querySelector('.tile--img__img').src" page
    case JSON.read result of
      Right (url :: String) -> do
        log $ "downloading from " <> url
        curl url (iconsPath <> "/" <> name)
        pure unit
      Left e -> do
        log $ "could not handle " <> name <> " with url " <> pageURL
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].