Skip to content
This repository has been archived by the owner on Oct 18, 2023. It is now read-only.

Latest commit

 

History

History
309 lines (226 loc) · 14.1 KB

release-checklist.md

File metadata and controls

309 lines (226 loc) · 14.1 KB

Release Checklist

Follow these steps, for both desktop Chrome and Firefox and at least one android build before releasing, and commit a refinement!

As we currently have little to no automated tests (or even a specification) when you fix an issue, add a step to the testing checklist for each feature/bug added, with a link to the issue/PR.

When releasing, we can copy this markdown into the PR for a release.

Chores

  • Make sure the manifest version was bumped (TODO: versions may be skipped, due to bad builds)

  • Update the apktool.yml versionCode/versionName and commit it to the repository.

  • Update the CHANGELOG.md

    • You can compare with latest commit before tagging via something like: https://github.com/coilhq/web-monetization-projects/compare/coil-extension@0.0.56...main (substitute release branch name for "main")

Zipping Extension Source Files

  • Zip the source code for the extension

    • Some web stores will require the submission of source files.
    • So far, zipping the coil-extension folder (instead of zipping at the project root) has given us the least trouble with passing review.
      • For example, zip -r coil-extension.zip coil-extension/
    • node_modules should be deleted prior to zipping the source files.

$Platform $Browser $Version

Copy below for each platform/browser/version tested, filtering steps where it makes sense.

  • Build for prod with release settings

    • e.g. pnpm build-prod chrome -p --run-prod --devtool=none
  • Import unpacked/temporary extension/add-on

    • For Firefox, go to about:debugging
      • Enable add-on debugging
      • Load Temporary Add-on...
    • For Chrome or MS Edge, go to chrome://extensions (or edge://extensions) and Load Unpacked
    • Use adb to install Samsung Internet Extensions
      • be sure to kill the browser and delete shared settings to be sure correct addon is tested
      • see code in scripts/reinstall-six.sh
  • Ensure that you are logged in with a user with valid subscription

    • image (or trial)
  • example.com should say "Streaming not enabled"

    • image
  • xrptipbot.com should monetize

    • image
  • twitch.tv works

    • image
  • monetized youtube video

    • image
  • Coil welcome and welcome to explore pages

    • Go to coil.com, the browser action popup should show "Welcome, $username"
      • image
    • Should have a link to coil.com/discover page
    • Once on discover page should show Discover Now with a rocket-ship graphic
      • image
  • Check the monetization animation works properly

    • image
    • Only required on desktop browsers
    • Should animate when monetized and packets received
    • Should stop animation when network disconnected
      • Note that on Firefox/MacOS the popup automatically closes when the tab loses focus so can use something like this in terminal:
        • sudo sleep 10 && sudo ifconfig en0 down && sleep 10 && sudo ifconfig en0 up
  • Check monetization works consistently

  • Will route to $coildomain.com/login rather than open popup if logged out

    • Log out from $coildomain.com
    • Check that icon is in 'unavailable' state
      • image
    • Click on browser action
    • Check that routed to login page
      • image
  • Run the puppeteer tests (look at the circle jobs)

    • export BROWSER_TYPE='chrome' # or 'firefox'
  • Go to a youtube video, manually skip to near end of video, and when autoplay of a video from another channel starts, check that monetization has stopped.

  • Go to xrptipbot.com and as page is loading very quickly open the popup. It should show "Thank you" even before streaming starts. The animation should play when the streaming starts and the outlined circle should become solid green in the toolbar icon. #120

  • Open the reloading-every-15s.html file:

    • Use a localhost server so WM works (e.g. with pnpm serve:fixtures)
    • Open the developer tools console undocked so can view while PAGE IS BACKGROUNDED
      • Note the Reloading page logging
    • Open the extension background page developer tools and look at the stream logging
    • SHOULD NOT initiate a stream or SPSP request #144
  • Open the event-logger.html file:

    • Use a localhost server so WM works (e.g. with python -m http.server 4000)
    • Look for unusual timings, check that pending state is emitted nearly immediately after page load or meta tag added
    • Issue: #63
    • Fix PR: #69
  • Check started event fires when quickly switching between tabs

    • Open the event-logger.html file
    • Switch to another (non-monetized) tab. The payments stop. Quickly switch back to the first tab.
    • The payments restart. Make sure there is a monetizationstart event
    • Issue: #105
    • Fix PR: #117
  • Check stopped event fires with correct requestId

    • Open the event-logger.html file
    • Induce a stop/start in same js 'tick' (tack on #induce to end of url)
    • Check that the stopped event has the correct requestId
    • Issue: #127
    • Fix PR: #128
  • Check tip event fires when clicked on in the popup

    • Open the event-logger.html file
    • Open the extension popup and click on "Send $1!" in the tipping tab
    • Check that the tip event occurs
  • Run a local web server (with pnpm run serve:dist) serving the dist folder, then open static/popup.html in a normal tab and check the popup rendering in various states.

  • If the browser is running on android, check that the "popup" browser action simply opens settings.

    • Install android-sdk on PC and Firefox on android
    • Enable developer mode on android and enable usb debugging
    • Plug in android to PC via usb
    • adb devices # make note of device id
    • adb shell pm grant org.mozilla.firefox android.permission.READ_EXTERNAL_STORAGE
    • adb shell pm grant org.mozilla.firefox android.permission.WRITE_EXTERNAL_STORAGE
    • Build the extension
    • pnpm web-ext run -s $PWD/dist --target=firefox-android --android-device=WUJ01PNSVY # from adb devices step
    • Issue: coil/coilhq#2084
    • Fix PRs: #166 #295
  • On MacOS Chromium browsers (Chrome/Edge) check that the monetized animation is working on non primary monitors.

  • Check that popup closes when another window is focused

    • Open two Browser windows, open the popup in one window

    • Focus on second window

    • Ensure that popup is closed

    • Issue: #313

    • Fix PR: #332

  • Check extension doesn't attempt to stream when unsubscribed

    • Log in with coil user that doesn't have active subscription
    • Open the developer tools and check the logging
    • SHOULD NOT even attempt to stream
    • image
    • Issue: #213
    • Fix PR: #222
  • Check can stream immediately after subscribing

    • Likely best to test this with staging where can use a test card
    • Log in with coil user that doesn't have active subscription
    • Add a subscription (can use testing card 4242 4242 4242 4242 )
    • Go to a monetized page and check that streaming works immediately
  • Check no stop event is fired when logged out

    • Open and console and set localStorage.WM_DEBUG = true

    • Go to a web monetized page when logged out

    • Check that no events are logged

    • Issue: #1947

    • Fix PR: #1964

  • When built for mv3, check that resumeWebMonetization works after killing worker (use chrome://serviceworker-internals)

    • Fix PR: [#3286][np3286]
  • Check that the polyfill is injected properly in incognito tabs

Iframe testing

    • Open a terminal
    • Start server (via pnpm serve:fixtures-iframes )
  1. Open developer tools and look at the structure of the dom
  • Use expand recursively feature
    • image
    • With the console set localStorage.WM_DEBUG = true

Test 1: basic monetization

  1. Load the page
    • Look for 4 monetizationpending events and 4 corresponding (same requestId) monetizationstart events logged in the console.

image

Test 2: refresh page / turn off / turn on

    • [re]load the page
    • Open developer tools and turn "off" monetization via editing allow attribute of top level iframes
    • image
    • Popup icon (and background page logging) should show no monetization:
      • image
    • Corresponding monetization events should be logged:
      • image
  1. turn "on" monetization via editing allow attribute of top level iframes

    • image
    • Popup icon (and background page logging) should show monetization
      • image
    • Corresponding monetization events should be logged:
      • image

Test 3: refresh page / turn off / background tab / turn on / foreground tab

  • As above but while the tab is backgrounded, after turning on each top level iframe a sequence of pending -> stopped events should be fired:
    • image

Test 4: nested

  • As per test 2
  • Turn off one top level and then turn off the nested frames in top level that is allowed
  • allow one nested iframe and check for indications of monetization