JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4963
  • Score
    100M100P100Q132860F
  • License Apache-2.0

Run and Test HTTP Requests with plain text and curl

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@orangeopensource/hurl) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    Hurl

    Hurl is a command line tool written in Rust that runs HTTP requests defined in a simple plain text format.

    The @orangeopensource/hurl package allows JavaScript developers to use Hurl in npm scripts.

    It can chain requests, capture values and evaluate queries on headers and body response. Hurl is very versatile, it can be used for fetching data and testing HTTP sessions: HTML content, REST / SOAP / GraphQL APIs, or any other XML / JSON based APIs.

    # Get home:
    GET https://example.net
    HTTP 200
    [Captures]
    csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)"
    
    
    # Do login!
    POST https://example.net/login?user=toto&password=1234
    X-CSRF-TOKEN: {{csrf_token}}
    HTTP 302

    Hurl can run HTTP requests but can also be used to test HTTP responses. Different types of queries and predicates are supported, from XPath and JSONPath on body response, to assert on status code and response headers.

    It is well adapted for REST / JSON APIs

    POST https://example.org/api/tests
    {
        "id": "4568",
        "evaluate": true
    }
    HTTP 200
    [Asserts]
    header "X-Frame-Options" == "SAMEORIGIN"
    jsonpath "$.status" == "RUNNING"    # Check the status code
    jsonpath "$.tests" count == 25      # Check the number of items
    jsonpath "$.id" matches /\d{4}/     # Check the format of the id

    HTML content

    GET https://example.org
    HTTP 200
    [Asserts]
    xpath "normalize-space(//head/title)" == "Hello world!"

    GraphQL

    POST https://example.org/graphql
    ```graphql
    {
      human(id: "1000") {
        name
        height(unit: FOOT)
      }
    }
    ```
    HTTP 200

    and even SOAP APIs

    POST https://example.org/InStock
    Content-Type: application/soap+xml; charset=utf-8
    SOAPAction: "http://www.w3.org/2003/05/soap-envelope"
    <?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:m="https://example.org">
      <soap:Header></soap:Header>
      <soap:Body>
        <m:GetStockPrice>
          <m:StockName>GOOG</m:StockName>
        </m:GetStockPrice>
      </soap:Body>
    </soap:Envelope>
    HTTP 200

    Installation

    npm install --save-dev @orangeopensource/hurl

    This will download the appropriate Hurl binaries for your platform. hurlmft binary is also installed, which you can use for exporting Hurl files to JSON files.

    Usage

    In your package.json file:

    {
      "name": "sample-app",
      "scripts": {
        "test": "hurl --test --glob test/*.hurl",
        ...
      },
      ...

    Documentation

    See https://hurl.dev

    Samples

    See https://hurl.dev/docs/samples.html