open-index/open-npm huggingface dataset:
npm package: @spartan-ui/icons
Description: Spartan Icon React component library
Author: Spartan UI Team
Latest version: 0.2.2

# @spartan-ui/icons

WHY OH WHY DOES THIS EXIST?

TWO REASONS:

1. Laziness - hate having to look up relevant icons
2. Consistency - If we always have well-defined icon components like
   `<SaveIcon />` etc. then we keep the same look-and-feel across dashboards
npm package: @spartan/quasar
Description: Spartan Quasar Toolkit
Author: Iulian N.
Latest version: 0.0.1

# Quasar

## Description

> Quasar toolkit for Spartan PHP.


## Install

```bash
npm install @spartan/quasar
```


## Docs

Full docs can be found at [docs.spartanphp.com](https://docs.spartanphp.com)


## About

### Author

Iulian N. `iulian@spartanphp.com`

### License

Spartan Quasar is licensed under the MIT License - see the `LICENSE` file for details.
npm package: @spartanbio/eslint-config
Description: Spartan Bio's ESLint config
Author: Spartan Bioscience Inc.
Latest version: 1.2.0

# Spartan Bio ESLint config

[ESlint](https://eslint.org/) config used by Spartan Bio.

## Usage

1. Add this package its peer dependencies to `devDependencies`

```bash
$ npx install-peerdeps --dev @spartanbio/eslint-config
```

2. Add `.eslintrc.js` with the following:

```js
module.exports = {
  extends: ['@spartanbio'],
};
```

If using babel, use:

```js
module.exports = {
  root: true,
  parserOptions: {
    parser: 'babel-eslint',
    sourceType: 'module',
  },
  extends: ['@spartanbio'],
};
```
npm package: @spartanbio/eslint-config-typescript
Description: Spartan Bio's eslint config for typescript
Author: Spartan Bioscience Inc.
Latest version: 1.0.1

# Spartan Bio ESLint config

[ESlint](https://eslint.org/) config for TypeScript used by Spartan Bio.

## Usage

1. Add this package its peer dependencies to `devDependencies`

```bash
$ npx install-peerdeps --dev @spartanbio/eslint-config-typescript
```

2. Add `.eslintrc.js` with the following:

```js
module.exports = {
  extends: ['@spartanbio/eslint-config-typescript'],
};
```
npm package: @spartanbio/eslint-config-vue
Description: Spartan Bio's ESLint config for Vue
Author: Spartan Bioscience Inc.
Latest version: 1.1.0

# Spartan Bio ESLint config for Vue

[ESlint](https://eslint.org/) config used with Vue by Spartan Bio.

## Usage

1. Add this package and its peer dependencies to `devDependencies`

```bash
$ npx install-peerdeps --dev @spartanbio/eslint-config-vue
```

2. Add `.eslintrc.js` with the following:

```js
module.exports = {
  extends: ['@spartanbio/eslint-config-vue'],
};
```

If using babel, use:

```js
module.exports = {
  root: true,
  parserOptions: {
    parser: 'babel-eslint',
    sourceType: 'module',
  },
  extends: ['@spartanbio/eslint-config-vue'],
};
```
npm package: @spartanbio/eslint-config-vue-typescript
Description: Spartan Bio's ESLint config for Vue and Typescript
Author: Spartan Bioscience Inc.
Latest version: 1.0.2

# Spartan Bio ESLint config for Vue and Typescript

[ESlint](https://eslint.org/) config used with Vue and Typescript by Spartan Bio.

## Usage

1. Add this package and its peer dependencies to `devDependencies`

```bash
$ npx install-peerdeps --dev @spartanbio/eslint-config-vue-typescript
```

2. Add `.eslintrc.js` with the following:

```js
module.exports = {
  extends: ['@spartanbio/eslint-config-vue-typescript'],
};
```
npm package: @spartanbio/stylelint-config
Description: Spartan Bio's stylelint config
Author: Spartan Bioscience Inc.
Latest version: 1.0.8

# Spartan Bio stylelint config

[stylelint](https://stylelint.io/) config used by Spartan Bio.

## Usage

1. Add `stylelint` this package to `devDependencies`

```bash
$ yarn add -D stylelint @spartanbio/stylelint-config

# or

$ npm i -D stylelint @spartanbio/stylelint-config
```

3. Add `.stylelintrc.js` with the following:

```js
module.exports = {
  extends: ['@spartanbio/stylelint-config'],
}
```
npm package: @spartanbio/stylelint-config-scss
Description: Spartan Bio's stylelint config for scss
Author: Spartan Bioscience Inc.
Latest version: 1.0.11

# Spartan Bio stylelint config wtih SCSS

[stylelint](https://stylelint.io/) with SCSS config used by Spartan Bio.

## Usage

1. Add `stylelint` this package to `devDependencies`

```bash
$ yarn add -D stylelint @spartanbio/stylelint-config-scss

# or

$ npm i -D stylelint @spartanbio/stylelint-config-scss
```

3. Add `.stylelintrc.js` with the following:

```js
module.exports = {
  extends: ['@spartanbio/stylelint-config-scss'],
}
```
npm package: @spartez-software/ap-server-session-generator
Description: Generate Agile Poker sessions quickly, with estimates and comments
Author: Michał Nykiel
Latest version: 1.0.1

# Agile Poker Server/DC session generator

Use this tool to generate Agile Poker sessions quickly, with estimates and comments.

## Installation

```
$ npm install -g @spartez-software/ap-server-session-generator
```

## Usage

Example usage, which will create 1 interactive and 1 async session on board #5 with admin as moderator and only participant:

```
$ ap-server-session-generator -h http://localhost:2990 -m admin:admin --interactive 1 --async 1 --board 5
```

More participants:

```
$ ap-server-session-generator -m admin:admin --interactive 1 --board 5 --participants user1:pass1 user2:pass2
```

Generate sessions 10 async sessions on all available boards:

```
$ ap-server-session-generator -m admin:admin --async 10 --all-boards
```

Customize vote values:

```
$ ap-server-session-generator -m admin:admin --interactive 1 --board 5 --votes S=1 M=2 L=3
```

## Notes

- All sessions will use the estimation field which is configured on board.
- All issues available on board will be estimated by all participants defined (plus moderator), for async session every participant will also add a comment.
- For kanban boards make sure to set the estimation field before generating sessions (it's set to _None_ by default and may cause weird results).
npm package: @spartez-software/azure-test
Description: azure integration tests helper lib 
Author: Bartłomiej Zięba
Latest version: 0.0.80

# `azure-tests`  (Beta)

Helper lib  -  azure integration tests

## prerequisites

* ability to run tests using jest

## installation
npm install @spartez-software/azure-test --save-dev

## setup

 * go get yourself an Azure devOps instance
 * setup .env

```
TEST_AZURE_URL=https://dev.azure.com/your-azure-site-name
TEST_AZURE_USER_TOKEN=pst! it is a secret pat, it belongs to the user that we use to make changes in Azure!
```

## usage (jest/typescript example)
```typescript
import { step } from '@spartez-software/test-utils';
import { TeamProjectReference } from 'azure-devops-node-api/interfaces/CoreInterfaces';
import { WorkItem } from 'azure-devops-node-api/interfaces/WorkItemTrackingInterfaces';
import { AzureDevOps } from '@spartez-software/azure-test/AzureDevOps';

describe('azure tests', () => {
    const azureDevOps = AzureDevOps.fromEnv();
    let teamProjectReference: TeamProjectReference;

    jest.retryTimes(5);
    jest.setTimeout(240000);

    beforeEach(async () => {
        await step('Create azure Project', async () => {
            teamProjectReference = await azureDevOps.createProject();
            expect(teamProjectReference).toBeDefined();
        });
    });

    it('should create and destroy project', async () => {
        const projectId = String(teamProjectReference.id);
        const workItemTrackingApi = await azureDevOps.connection.getWorkItemTrackingApi();
        const json = [{
            op: 'add',
            path: '/fields/System.Title',
            from: null,
            value: 'Sample task',
        }];

        let wi: WorkItem;
        await step('Create work item', async () => {
            wi = await workItemTrackingApi.createWorkItem({}, json, projectId, 'Task');
            expect(wi).toBeDefined();
        });

        await step('Verify workitem exists', async () => {
            const workItem = await workItemTrackingApi.getWorkItem(wi.id as number);
            expect(workItem).toBeDefined();
        });
    });

    afterEach(async () => {
        await step('Delete azure project', async () => {
            if (teamProjectReference.id) {
                await azureDevOps.deleteProject(teamProjectReference.id);
            }
        });
    });
});
```

### pitfalls
* Azure DevOps can take a long time to create a project, set up timeouts accordingly. 
* Large number of project, even deleted ones, make the create project time even longer.
npm package: @spartez-software/jira-test
Description: jira integration tests helper lib 
Author: Bartłomiej Zięba
Latest version: 0.0.80

# `jira-test` (Beta)

helper lib - integration tests

## prerequisites

* ability to run tests using jest

## installation
npm install @spartez-software/jira-test --save-dev

## setup

 * go get yourself a jira cloud instance
 * setup .env

```
TEST_JIRA_URL=https://your-cloud-jira-test-name.atlassian.net
TEST_JIRA_USER=user-that-will-make-changes-in-jira@spartez-software.com
TEST_JIRA_USER_TOKEN=pst! it is a secret, an api token!
```

## usage (jest/typescript example)
```typescript
import { step, TestLogger } from '@spartez-software/test-utils';
import { Jira, ProjectTemplateKeys } from '@spartez-software/jira-test';

describe('jira tests', () => {
    jest.retryTimes(1);
    jest.setTimeout(240000);

    const jira = Jira.getJiraFromEnv();
    const logger = new TestLogger();

    let project: string;

    it('Should create and destroy project with 2 issues', async () => {
        await step('Create jira Project', async () => {
            project = await jira.createProject();
            expect(project).toBeDefined();
        });

        logger.log(project);

        await step('adding jira issue', async () => {
            const issues = [{ summary: 'ala', type: 'Bug' }, { summary: 'pola', type: 'Bug' }];
            await jira.createSimpleIssues(project, issues);
        });
    });

    afterEach(async () => {
        await step('Delete jira project', async () => {
            if (project) {
                await jira.deleteProject(project);
            }
        });
    });

    it('Should create and destroy servicedesk project', async () => {
        await step('Create jira Project', async () => {
            project = await jira.createProjectFromTemplate(ProjectTemplateKeys.serviceDesk.simplifiedGeneralServiceDesk);
            expect(project).toBeDefined();
        });
        logger.log(project);

        await step('adding jira issue', async () => {
            const issues = [{ summary: 'ala', type: 'Task' }, { summary: 'pola', type: 'Task' }];
            await jira.createSimpleIssues(project, issues);
        });
    });

    afterEach(async () => {
        await step('Delete jira project', async () => {
            if (project) {
                await jira.deleteProject(project);
            }
        });
    });
});

```
npm package: @spartez-software/test-utils
Description: Spartez tests helper lib 
Author: Bartłomiej Zięba
Latest version: 0.0.80

# `spartez test utils` (Beta)

Various test helpers - jest based

## prerequisites

* ability to run tests using jest

## installation
npm install @spartez-software/jira-test --save-dev

## Usage

### Logging

For logging inside tests it is better to use `TestLogger` from `@spartez-software/test-utils`. 
It's a wrapper around  console.log(...), but with added test context and colors.
Especially useful when running tests in parallel.

### Steps

Use **steps** from  `@spartez-software/test-utils` to divide your integration and e2e tests into sections
that can/should be retried(in case of network.* issues, external services hiccups etc) to make the test stable. 
It uses https://www.npmjs.com/package/p-retry underneth, you can pass retry options by providing optional StepOpts param.
```typescript
interface StepOpts {
    retries?: number,
    minTimeout?: number,
    maxTimeout?: number
}
```
look https://github.com/tim-kos/node-retry#retryoperationoptions for default values.

If no StepOpts are given - it defaults to  
```typescript
{ retries: 3 }
```
npm package: @spartez-software/ui-test-utils
Description: Spartez UI tests helper lib 
Author: Bartłomiej Zięba
Latest version: 0.0.80

# `spartez test utils` (Beta)

Various UI test helpers - jest and puppeteer  based

## prerequisites

* ability to run tests using jest

## installation
npm install @spartez-software/ui-test-utils --save-dev

## setup

 * go get yourself a jira cloud instance
 * setup .env

```
TEST_JIRA_URL=https://your-cloud-jira-instance-name.atlassian.net
JIRA_ACT_AS_USER=user-be-testing-app@spartez-software.com
JIRA_ACT_AS_USER_PASSWORD=pst! it is a secret!, not a token!
```

## usage (jest/typescript example)
```typescript
import 'dotenv/config';
import { Browser, Page } from 'puppeteer';
import * as puppeteer from 'puppeteer';
import { step } from '@spartez-software/test-utils';
import {
    cleanupScreenshots, loginToJira, screenshot, setupOutputDirectory,
    forwardConsoleAndRequestsFromBrowser, waitTillHTMLRendered
} from '@spartez-software/ui-test-utils';


describe('jira - login', () => {
    jest.setTimeout(120000);

    const jiraUrl = String(process.env.TEST_JIRA_URL);
    const user = String(process.env.JIRA_ACT_AS_USER);
    const pass = String(process.env.JIRA_ACT_AS_USER_PASSWORD);
    let page : Page;
    let browser : Browser;

    beforeAll(async () => {
        cleanupScreenshots();
        setupOutputDirectory();
        browser = await puppeteer.launch({
            headless: true,
            args: ['--no-sandbox'],
        });
    });

    afterAll(async () => {
        await browser.close();
    });

    beforeEach(async () => {
        page = await browser.newPage();
    });

    afterEach(async () => {
        await screenshot(page);
        await page.close();
    });

    test('Should get valid board id for kanban nextgen', async () => {
        page = await browser.newPage();
        await page.setViewport({
            width: 1920,
            height: 1080,
        });
        await forwardConsoleAndRequestsFromBrowser(page);

        await step(`Login to jira ${jiraUrl}`, async () => {
            await loginToJira(page, jiraUrl, user, pass);
            await waitTillHTMLRendered(page);
        });

        await step('verify jira is there', async () => {
            const jira = await page.$('#jira-frontend');
            expect(jira).toBeDefined();
        })
    });
});
```
### page objects

* loginToJira() : obvious

### helper functions that deserv a bit more explanation

*  async function **waitTillHTMLRendered**(page: Page, timeout = 30000): Promise\<void> 
<br> Waits till pages html becomes stable (page.content().length). Don't use if you have some 
background tasks changing the page constantly or in an uncontrolled way (periodic, or push for example)
*  async **forwardConsoleAndRequestsFromBrowser**(page: Page) Promise\<void> 
<br> Forwards browser **console, pageerror, response and requestfailed** events from the browser. Usefull when debuging, but way to verbose to keep it enabled in the CI.