npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

playwright-structure-ts

v1.0.8

Published

Create a Playwright app for building env-ready

Downloads

4

Readme

Playwright TS Boiler Plate

A brief description of what this project does and who it's for

Quick Start

To create a project, simply run:

npx playwright-structure-ts <project-name>

Or

npm init playwright-structure-ts <project-name>

Installation

Clone the repo:

git clone --depth 1 https://github.com/erenkorkmazemre/playwright-structure-ts
cd playwright-structure-ts

Install the dependencies:

npm install

Set the environment variables:

cp .env.example .env
# open .env and modify the environment variables (Talk to Eren Emre Korkmaz for local tests(you need franchise username and password) !!!!!!!)

Technologies

  • Node.js (10.16.3)
  • Faker-js (7.6.0)
  • Playwright/test (1.35.1)
  • Eslint (8.44.0)
  • Dotenv (16.0.3)
  • Prettier (2.8.8)
  • Docker
  • Jenkins
  • Winston (3.8.2)

Structure

project/                          # Source code.
├── tests/                        # This folder contains your tests.
│   ├── e2e/                      # This folder contains E2E (end-to-end) tests. Tests that simulate user interactions using browser automation tools are placed here.
│   │   ├── login.spec.ts
│   │   ├── home.spec.ts
│   │   └── ...
│   ├── integration/               # This folder contains integration tests. It is used to test the interaction between components, services, and other pieces of source code.
│   │   ├── footer.spec.ts
│   │   ├── header.spec.ts
│   │   └── ...
│   ├── unit/                     #
│   │   ├── utils.spec.ts
│   │   ├── services.spec.ts
│   │   └── ...
│   ├── types/                    #
│   │   ├── utils.spec.ts
│   │   ├── services.spec.ts
│   │   └── ...
│   └── ...
├── actions/                      # This directory contains page object files that define the elements and actions on specific pages of your application. Each page object file represents a different page or a component of your application.
│   ├── pages/
│   │   ├── LoginPage.ts
│   │   ├── HomePage.ts
│   │   └── ...
│   └── ...
├── locators/                     # This directory contains locator files that define the selectors or locators for specific elements on the pages of your application. Each locator file corresponds to a particular page or component and contains variables or functions that return the selectors for elements on that page.
│   ├── loginLocators.ts
│   ├── homeLocators.ts
│   └── ...
├── utils/                        # This directory houses utility files, such as helper functions, configuration files, or custom modules that provide commonly used functionalities across your tests.
│   ├── endpoints/                #
│   │   ├── asdasd.ts
│   │   └── ...
│   ├── urls/                     #
│   │   ├── asdasd.ts
│   │   └── ...
│   ├── helpers.ts                #
│   ├── configurations.ts         #
│   ├── logger.ts                 #
│   └── ...
├── data/                         #
│   ├── mocks/                    #
│   │   ├── dynamic/              #
│   │   │   ├── endpoint-1.ts
│   │   │   ├── endpoint-2.ts
│   │   │   └── ...
│   │   ├── static/               #
│   │   │   ├── endpoint-1.json
│   │   │   ├── endpoint-2.json
│   │   │   └── ...
│   │   └── ...
│   └── ...
├── playwright-report/            #
│   ├── index.html                #
│   └── ...
├── test-results/                 #
│   ├── index.html                #
│   └── ...
├── scripts/                      #
│   ├── cron-slack.sh             #
│   ├── trigger-slack.sh          #
│   ├── trigger-jenkins.sh        #
│   └── ...
├── playwright.config.ts          #
├── .env                          #
├── .env.example                  #
├── bitbucket-pipelines.yml       #
├── Jenkinsfile                   #
├── package.json                  #
├── tsconfig.json                 #
└── README.md                     #

Deployment Process

The deployment process also includes the pipeline processes involved in the project.

Local testing execution example

The steps when the pipeline is triggered

LOCAL(CODE-BASE) => DEV
- Compile Code.
- Code-Metrics.
- Build container images or package.
- Preparation or update in deployment templated.
- Create or update monitor dashboard.
- Testing of the modified field-components and the related fields-components it affects (Feature Branch testing) (component testing for UI or API or both).
- Creation of test data(with fake data) for the component or components and transferring it to the development environment.
- Integration of test reports with Slack, Jenkins, Jira, etc., and delivering the reports.
DEV => STAGE(PRE-PROD)
- Compile Code
- Code-Metrics
- Build container images or package
- Preparation or update in deployment templated
- Create or update monitor dashboard
- Code-base integration testing (unit tests, smoke tests, contract tests etc.)
- Creation of test data(with fake data) related to the component during the testing phase and transferring it to the staging environment.
- Integration of test reports with Slack, Jenkins, Jira, etc., and delivering the reports.
STAGE(PRE-PROD) => PROD
- Compile Code
- Code-Metrics
- Build container images or package
- Preparation or update in deployment templated
- Create or update monitor dashboard
- Preparing Release notesVersion taggingIntegration of test reports with Slack, Jenkins, Jira, etc., and delivering the reports.

The steps in the environments

In DEV env
- Verification of test reports at the end of the pipeline.
- Code Metric controls.
- QA Manuel control (Accessibility Test)
In STAGE(PRE-PROD) env
- Performing and reporting performance and stress tests using machines that have the same power as the one in the prod environment.
- UAT tests (Product Owner).
- Third party users tests.
- Deleting all data(with backup) and running end-to-end tests with Cron (during time zones when nobody actively uses it, based on country) and simultaneously generating high coverage fake data.
In PROD env
- Avoiding testing whenever possible (to prevent excessive server load, unnecessary log generation, etc.).
- Monitoring user notifications and logging incoming notifications (We have currently set up a pipeline in Slack to record notifications received from the field).
- vHealth Checks

Logger

A winston logger with custom format is used. This logger is registered into the dependency injection container. Import the logger from utils/logger.ts. It is using the Winston logging library.

Logging should be done according to the following severity levels (ascending order from most important to least important):

import logger from '@utils/logger';

logger.error('message'); // level 0
logger.warn('message'); // level 1
logger.info('message'); // level 2
logger.http('message'); // level 3
logger.verbose('message'); // level 4
logger.debug('message'); // level 5

Example logging:

logger.info('stepDefinition', { additional: 'info' });

Reports

Testing

Tags, deployment process etc

- For Local Test

docker-compose up docker-compose -f docker-compose.yml up docker-compose -f docker-compose.dev.yml up docker-compose -f docker-compose.stage.yml up

- For Local Parallel Test

- For Remote Docker Parallel Test

Linting

Linting is done using ESLint and Prettier.

To modify the ESLint configuration, update the .eslintrc.json file. To modify the Prettier configuration, update the .prettierrc.json file.

To prevent a certain file or directory from being linted, add it to .eslintignore and .prettierignore.

To maintain a consistent coding style across different IDEs, the project contains .editorconfig

Authors

Badges

MIT License GPLv3 License AGPL License