1
0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-11-13 03:35:52 +01:00
verdaccio/test/e2e-ui/registry-launcher.ts
Juan Picado 558d78f32a feat: flexible user interface generator (#2070)
* feat: flexible template generator and manifest

* chore: add changeset

* chore: restore dep

* chore: add docs

* chore: update snapshots

* chore: update docker examples for v5

* chore: refactor web module

* chore: format

* chore: refactor web api endpoints

* test: add test for user login web

* chore: refactor endpoints

* chore: fix merge

* chore: fix merge

* Update ci.yml

* chore: test

* chore: add static

* chore: update script

* chore: fix e2e

* chore: fix method

* docs: update v5 relative docker example

* chore: update html render

* chore: update style

* Update .prettierignore

* chore: update changeset

* chore: use pnpm6 on run test

temporary ci

* chore: drop node 16 for pnpm 6

* chore: update ci

* chore: update ci

* chore: update ci

* chore: update ci

* chore: remove circle ci

* chore: better url prefix handling

* chore: format code

* chore: remove test node 10

* docs: add docker v5 relative revers proxy example

* chore: use base html tag

* chore: update test
2021-04-09 17:54:38 +02:00

69 lines
1.8 KiB
TypeScript

import { fork } from 'child_process';
import path from 'path';
import { HTTP_STATUS } from '@verdaccio/commons-api';
const debug = require('debug')('verdaccio:e2e:ui:launcher');
export const CREDENTIALS = {
user: 'foo',
password: 'test',
};
export default class VerdaccioProcess {
private bridge;
private config;
private childFork;
public constructor(config, bridge) {
this.config = config;
this.bridge = bridge;
}
public init(verdaccioPath) {
return new Promise((resolve, reject) => {
this._start(verdaccioPath, resolve, reject);
});
}
private _start(verdaccioPath: string, resolve: Function, reject: Function) {
const verdaccioRegisterWrap: string = path.join(verdaccioPath);
const childOptions = {
silent: false,
};
const { configPath, port } = this.config;
debug('config path: %o', configPath);
debug('port: %o', port);
this.childFork = fork(
verdaccioRegisterWrap,
['-c', configPath, '-l', port as string],
childOptions
);
this.childFork.on('message', (msg) => {
// verdaccio_started is a message that comes from verdaccio in debug mode that notify has been started
if ('verdaccio_started' in msg) {
this.bridge
.debug()
.status(HTTP_STATUS.OK)
.then((body) => {
this.bridge
.auth(CREDENTIALS.user, CREDENTIALS.password)
.status(HTTP_STATUS.CREATED)
.body_ok(new RegExp(CREDENTIALS.user))
.then(() => resolve([this, body.pid]), reject);
}, reject);
}
});
this.childFork.on('error', (err) => reject([err, this]));
this.childFork.on('disconnect', (err) => reject([err, this]));
this.childFork.on('exit', (err) => reject([err, this]));
}
public stop(): void {
return this.childFork.kill('SIGINT');
}
}