insomnia/packages/insomnia-smoke-test
James Gatz 6ef9a46814
Api V2 (#6135)
* Add support for multiple remote projects per Team (#6009)

* update fetching of teams

* create and delete remote projects

* backend project sync using the new teamProjectId in the API

* indicator

* use team api to get organization data

* handle logged out state

* remove remote from duplicate modal

* remaining insomnia fetch fixes

* fix ts issues

* fix ts log issue

* fix ts error

* fix ts update

* fix tests

* remove log

* add types to insomniaFetch

* named arguments in vcs

---------

Co-authored-by: jackkav <jackkav@gmail.com>

* Project Presence (#6079)

* fix ts log issue

* fix ts update

* update fetching of teams

* create and delete remote projects

* real-time

* update api changes

* check for successful response

* get user profile

* cleanup

* update fetch

* update network status

* fix for insomniaFetch new api

* insomnia fetch from window

* fix missing stat

* fix project dropdown

* update avatar

* update presence when closing the app

* update the presence every minute

* cleanup presence

* use eventsource and improve debugging

* Cloud only projects (#6167)

* Add support for multiple remote projects per Team (#6009)

* update fetching of teams

* create and delete remote projects

* backend project sync using the new teamProjectId in the API

* indicator

* use team api to get organization data

* handle logged out state

* remove remote from duplicate modal

* remaining insomnia fetch fixes

* fix ts issues

* fix ts log issue

* fix ts error

* fix ts update

* fix tests

* remove log

* add types to insomniaFetch

* named arguments in vcs

---------

Co-authored-by: jackkav <jackkav@gmail.com>

* login routes

* cleanup logged in state

* update organizations

* fixes

* update migration

* auto init sync on workspaces without git

* fix auto init sync

* checkpoint

* update import options in empty project pane

* responsive styles

* update package-lock

* join an org in sidebar

* readability improvements

* move modals and root loader to org

* cleanup root

* expire session take 1

* cleanup default org id

* fix ts issue

---------

Co-authored-by: jackkav <jackkav@gmail.com>

* Add Scratch Pad collection (#6221)

* add scratchpad collection

* filter scratchpad from cloud migration

* disable sync for scratchpad

* update settings for scratchpad

* log in rename

* check if user is logged in or has logged in before

* use organization api

* organizations api fixes

* update urls

* move modals to root

* update org navbar links

* lint fix

* type-check

* Add form for setting up the staging env

* add autolinking

* onboarding

* remove default org id

* staging urls

* avatar styles

* update urls

* use display name for orgs

* update settings modal with dev

* proper project deletions

* fix api calls perf

* sidebar improvements

* layout styles

* disable tests for now

* fix boolean

* fix data migration

* dev settings styles

* test init

* organization names

* link styles

* improve scratchpad banner styles

* http colors

* url bar styles

* spinner styles

* breadcrumbs styles

* help and feedback links

* settings to root

* onboarding

* fetch remote projects on org nav

* update avatar styles

* use name initials in avatars

* don't allow to delete default organization project

* add scratchpad checks

* tests

* workspace settings tabs types

* export all workspaces

* fix types and personal org

* project permission checks

* continue with sso

* organization avatars

* project presence avatars

* fix privacy/terms links

* add the no-wrap classname

* update user name and email in the app

* fix delete action

* ai fetching

* generate tests in sequence to help with rate limiting

* wip testing

* wip test

* improve test and migration script

* fix ts

* local to cloud projects test

* set local-to-cloud-projects.test as slow

* fix e2e tests

* update settings tests

* update more apis that changed from teams -> organizations

* simplify remote project migration

* org.branding can be undefined

* fix imports issue in sr

* remove .only

* remove unused gql query

* fix onboarding height jump

* trust some rnd and upload artifacts on failure

* fix env vars replacement on prod

* fix constant name

* bring back checks

* fix inso test

* add temp changes

* fix inconsistent response handling

* handle bad auth code errors

* show email when logged in

* remove the concept of default_project

* cleanup auth styles

* fix: use scratchpad constants wherever needed and remove seed

* fix sentry lint error

* migrate with update

* add scratch pad fixture and typing

* refactor pushSnapshotOnInitialize to always work

* remove console.log

* remove account from preferences

* improve trail-lines styles

* fix project sidebar scroll issue

* only create diff of projects

* fix lint

* sync

* feat: add plan upgrading modal for git sync (#6516)

* feat: add plan upgrading modal for git sync

* feat: add plan upgrading modal to project git menu and grid menu

* fix: use JSON.parse for getting flag value

* update ask modal

* remove git option from workspace settings

---------

Co-authored-by: gatzjames <jamesgatzos@gmail.com>

* sort projectswith default at top

* create local copies of remotes

* update presence exit update

* renames

* fix deleting/renaming projects with remoteId

* remoteId instead of projectId

* remote-collections

* fix initializeProjectForTeam

* fix missing parentId in remote projects

* add missing billing api

* add migration page and check for migrations

* cleanup project sync logic

* fix remote projects updating

* add notes

* fix backend-project test

* fix: use features API for fetching feature list (#6538)

* members -> collaborators

* remove dev settings

* use shouldRunMigrations in onboarding

* fix empty pane styles

* remove beforeUnload for presence

* show expiry info

* better error for upgrade in new project action

* extend retry period

* fallback and control revalidate

* add pending indicator for switching organizations

* fix exports (#6553)

* Sync Organizations (#6551)

* organization cache and updates

* error handling in org sync

* sort organizations

* clean up sort

* org sort and avatar fallback

---------

Co-authored-by: jackkav <jackkav@gmail.com>

* Presence updates (#6552)

* use remoteId for presence

* use project loader for the active project

* fix in present users

* logic clean

* match remoteId checks

---------

Co-authored-by: jackkav <jackkav@gmail.com>

* add default color to loading indicator

* fix redirect loop when there are no projects

* scratchpad fallback on initial route load

* re-enable ai check

* update error in renameProject

* db query to get projects in workspace

* review fix

* comments

* remove initModelFrom magic

* fix lint issue

---------

Co-authored-by: jackkav <jackkav@gmail.com>
Co-authored-by: Mark Kim <mark.kim@konghq.com>
Co-authored-by: Filipe Freire <livrofubia@gmail.com>
Co-authored-by: Hexxa <hexxa@outlook.com>
2023-09-24 23:12:50 +00:00
..
cli cli flake timeout 20s (#6034) 2023-06-14 14:42:01 +00:00
docs/imgs [INS-2051] Reorganize smoke tests README (#5264) 2022-10-19 08:58:49 +01:00
fixtures Api V2 (#6135) 2023-09-24 23:12:50 +00:00
playwright Api V2 (#6135) 2023-09-24 23:12:50 +00:00
server Api V2 (#6135) 2023-09-24 23:12:50 +00:00
tests Api V2 (#6135) 2023-09-24 23:12:50 +00:00
.eslintignore Enable ESLint & TS for smoke tests (#3397) 2021-05-19 07:49:48 -04:00
.gitignore removes insomnia designer migration code (#4404) 2022-01-25 11:14:24 -05:00
CLI.md fix: http request loading indicator (#6265) 2023-08-13 12:30:04 +02:00
jest.config.js chore(deps) updates (all but insomnia) to use @jest/globals (#4793) 2022-05-18 17:27:31 -04:00
package.json Bump app version to 2023.5.8 2023-09-07 17:15:14 +02:00
playwright.config.ts Api V2 (#6135) 2023-09-24 23:12:50 +00:00
README.md fix: http request loading indicator (#6265) 2023-08-13 12:30:04 +02:00
tsconfig.build.json tsconfig cleanup (#4908) 2022-06-27 12:57:50 -04:00
tsconfig.json tsconfig cleanup (#4908) 2022-06-27 12:57:50 -04:00

Insomnia Smoke Tests

Playwright

This project contains the smoke testing suite for Insomnia App.

To find more about Inso CLI smoke tests, check this document.

Quick-start

Prerequisites:

  • Clone the project
  • Run npm install

To run all tests:

  • In one terminal run: npm run watch:app
  • In another terminal run: npm run test:smoke:dev

To run single tests:

  • Filter by the file or test title, e.g. npm run test:smoke:dev -- oauth

Debugging and Developing Tests locally

Playwright VS Code extension

In order to run/debug tests directly from VS Code:

  • Install the Playwright extension.
  • With the extension installed, run on terminal npm run watch:app.

You can trigger tests from the Testing tab, or within the test files clicking the run button.

editor

If no tests appear, you may need to run "Refresh playwright tests". This can be done from the command palette, or by using the button at the top of the Testing tab.

refresh

Playwright Inspector

You can step through tests with playwright inspector: PWDEBUG=1 npm run test:smoke:dev

This is also useful to help create new tests.

playwright inspector

Playwright Trace viewer

We generate Playwright Traces when tests run. These can be used to debug local and CI test failures.

playwright trace viewer

To open a local trace viewer for a given test output, run:

# Example:
npx playwright show-trace packages/insomnia-smoke-test/traces/app-can-send-requests/trace.zip

Alternatively you can upload this trace to trace.playwright.dev.

Additional Log levels

You can enable additional logging to help you debug tests:

  • Playwright logs: DEBUG=pw:api npm run test:smoke:dev
  • Insomnia console logs: DEBUG=pw:browser npm run test:smoke:dev
  • WebServer console logs: DEBUG=pw:WebServer npm run test:smoke:dev

Reproducing CI Failures

Getting traces from CI

Traces from CI execution can be found in the failed CI job's artifacts.

artifacts

After downloading the artifacts, these can be extracted and loaded up into the Trace viewer.

Build and package methods

It's possible to run the smoke tests for:

  • A build, the JS bundle that is loaded into an electron client
  • A package, the executable binary (e.g. .dmg or .exe)

For build:

# Transpile js bundle
npm run app-build

# Run tests
npm run test:smoke:build

For package:

# Build executable in /packages/insomnia/dist
npm run app-package

# Run tests
npm run test:smoke:package

Each of the above commands will automatically run the Express server, so you do not need to take any extra steps.

Non recurring tests

Non recurring / non-CI tests, like pre-release ones, can be run using Playwright VS Code extension or by running test:dev against the desired test file:

npm run test:dev -w packages/insomnia-smoke-test -- preferences-interactions