DEV;Fix tests, lint and build
This commit is contained in:
parent
8a8cf962d8
commit
40deb32d91
17 changed files with 81 additions and 110 deletions
|
@ -26,6 +26,7 @@ module.exports.append = (config) => {
|
|||
config.resolve.extensions.push('.ts', '.tsx', '.mdx', '.json', 'txt');
|
||||
config.resolve.alias = {
|
||||
...config.resolve.alias,
|
||||
config: path.join(__dirname, '../../config'),
|
||||
'@treejs/components': path.join(__dirname, '../../packages/components/src'),
|
||||
'@treejs/api': path.join(__dirname, '../../packages/api/src'),
|
||||
'@treejs/auth': path.join(__dirname, '../../packages/auth/src'),
|
||||
|
|
8
Jenkinsfile
vendored
8
Jenkinsfile
vendored
|
@ -7,13 +7,7 @@ setup {
|
|||
}
|
||||
|
||||
node {
|
||||
checkCodeStability({
|
||||
postInstallClosure = { isOnlyDeploy ->
|
||||
stageWhen('typedoc', !isOnlyDeploy, {
|
||||
sh 'npm run build:doc'
|
||||
})
|
||||
}
|
||||
})
|
||||
checkCodeStability({})
|
||||
|
||||
release({
|
||||
publishToNPM({
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
interface AppConfig {
|
||||
BASE_ENDPOINT_URL: string;
|
||||
CLIENT_PORT?: number;
|
||||
SELENIUM_IP: string;
|
||||
SELENIUM_PORT: number;
|
||||
SERVER_IP: string;
|
||||
}
|
||||
|
||||
let config: AppConfig = {
|
||||
SELENIUM_IP: '192.168.0.40',
|
||||
SELENIUM_PORT: 4444,
|
||||
|
||||
SERVER_IP: 'localhost',
|
||||
CLIENT_PORT: 80,
|
||||
|
||||
BASE_ENDPOINT_URL: 'https://jsonplaceholder.typicode.com',
|
||||
};
|
||||
|
||||
// API and E2E types
|
||||
if (process.env.APP_ENV === 'CI') {
|
||||
config = {
|
||||
...config,
|
||||
SERVER_IP: '192.168.0.40',
|
||||
CLIENT_PORT: 89,
|
||||
};
|
||||
}
|
||||
|
||||
// start server with this setting
|
||||
if (process.env.APP_ENV === 'test') {
|
||||
config = {
|
||||
...config,
|
||||
SERVER_IP: '0.0.0.0',
|
||||
CLIENT_PORT: 89,
|
||||
};
|
||||
}
|
||||
|
||||
export default config;
|
6
config/config.json
Normal file
6
config/config.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"E2E_PORT": 9091,
|
||||
"LOCALHOST_PORT": 6006,
|
||||
|
||||
"BASE_ENDPOINT_URL": "https://jsonplaceholder.typicode.com"
|
||||
}
|
|
@ -8,16 +8,17 @@ module.exports = {
|
|||
testRegex: '(/__tests__/.*|(-|/)(test))\\.tsx?$',
|
||||
moduleFileExtensions: ['ts', 'tsx', 'js', 'json'],
|
||||
moduleNameMapper: {
|
||||
'^@treejs/components(.*)$': '<rootDir>/packages/treejs-components/src/$1',
|
||||
'^@treejs/api(.*)$': '<rootDir>/packages/treejs-api/src/$1',
|
||||
'^@treejs/auth(.*)$': '<rootDir>/packages/treejs-auth/src/$1',
|
||||
'^@treejs/constants(.*)$': '<rootDir>/packages/treejs-constants/src/$1',
|
||||
'^@treejs/utils(.*)$': '<rootDir>/packages/treejs-utils/src/$1',
|
||||
'^@treejs/forms(.*)$': '<rootDir>/packages/treejs-forms/src/$1',
|
||||
'^@treejs/hooks(.*)$': '<rootDir>/packages/treejs-forms/src/$1',
|
||||
'^@treejs/localization(.*)$': '<rootDir>/packages/treejs-localization/src/$1',
|
||||
'^@treejs/styles(.*)$': '<rootDir>/packages/treejs-styles/src/$1',
|
||||
'^@treejs/types(.*)$': '<rootDir>/packages/treejs-types/src/$1',
|
||||
'^config(.*)$': '<rootDir>/config/$1',
|
||||
'^@treejs/components(.*)$': '<rootDir>/packages/components/src/$1',
|
||||
'^@treejs/api(.*)$': '<rootDir>/packages/api/src/$1',
|
||||
'^@treejs/auth(.*)$': '<rootDir>/packages/auth/src/$1',
|
||||
'^@treejs/constants(.*)$': '<rootDir>/packages/constants/src/$1',
|
||||
'^@treejs/utils(.*)$': '<rootDir>/packages/utils/src/$1',
|
||||
'^@treejs/forms(.*)$': '<rootDir>/packages/forms/src/$1',
|
||||
'^@treejs/hooks(.*)$': '<rootDir>/packages/forms/src/$1',
|
||||
'^@treejs/localization(.*)$': '<rootDir>/packages/localization/src/$1',
|
||||
'^@treejs/styles(.*)$': '<rootDir>/packages/styles/src/$1',
|
||||
'^@treejs/types(.*)$': '<rootDir>/packages/types/src/$1',
|
||||
'\\.(css|less|sass|scss)$': '<rootDir>/types/emptyMock.ts',
|
||||
},
|
||||
collectCoverage: !!process.env.CI,
|
||||
|
@ -26,7 +27,6 @@ module.exports = {
|
|||
|
||||
// enzyme
|
||||
snapshotSerializers: ['enzyme-to-json/serializer'],
|
||||
setupFilesAfterEnv: ['./config/jestSetup.ts'],
|
||||
|
||||
globals: {
|
||||
'ts-jest': {
|
||||
|
|
|
@ -6,9 +6,9 @@ RUN apk add nginx --force
|
|||
RUN mkdir app
|
||||
RUN mkdir -p /run/nginx
|
||||
|
||||
COPY ./dist /app/dist
|
||||
COPY ./storybook-static /app/dist
|
||||
COPY ./docker/nginx/conf.d/ /etc/nginx/conf.d/
|
||||
|
||||
EXPOSE 80 3330
|
||||
EXPOSE 80
|
||||
|
||||
VOLUME [ "/etc/nginx/conf.d" ]
|
||||
|
|
|
@ -4,10 +4,6 @@ server {
|
|||
|
||||
server_name _;
|
||||
|
||||
root /app/dist/client;
|
||||
root /app/dist;
|
||||
index index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,5 @@
|
|||
var config = require('../e2e_app_config.json');
|
||||
|
||||
module.exports = {
|
||||
'Welcome page': function (browser) {
|
||||
browser
|
||||
.url('http://' + config.IP + ':' + config.PORT)
|
||||
.waitForElementVisible('body', 1000)
|
||||
.assert.title('Storybook')
|
||||
.end();
|
||||
browser.url(browser.launchUrl).waitForElementVisible('body', 1000).assert.title('Storybook').end();
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"IP": "192.168.0.20",
|
||||
"PORT": 9080
|
||||
}
|
33
nightwatch.conf.js
Normal file
33
nightwatch.conf.js
Normal file
|
@ -0,0 +1,33 @@
|
|||
const config = require('./config/config.json');
|
||||
|
||||
const setting = {
|
||||
selenium_port: 4444,
|
||||
selenium_host: '192.168.0.20',
|
||||
desiredCapabilities: {
|
||||
chromeOptions: {
|
||||
args: ['headless', 'no-sandbox'],
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
src_folders: 'e2e/',
|
||||
output_folder: false,
|
||||
selenium: {
|
||||
start_process: false,
|
||||
},
|
||||
test_settings: {
|
||||
localhost: Object.assign(
|
||||
{
|
||||
launch_url: 'http://192.168.0.120:' + config.LOCALHOST_PORT,
|
||||
},
|
||||
setting
|
||||
),
|
||||
ci: Object.assign(
|
||||
{
|
||||
launch_url: 'http://192.168.0.20:' + config.E2E_PORT,
|
||||
},
|
||||
setting
|
||||
),
|
||||
},
|
||||
};
|
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
"src_folders": "e2e/",
|
||||
"output_folder": false,
|
||||
"selenium": {
|
||||
"start_process": false
|
||||
},
|
||||
"test_settings": {
|
||||
"default": {
|
||||
"selenium_port": 4444,
|
||||
"selenium_host": "192.168.0.20",
|
||||
"desiredCapabilities": {
|
||||
"chromeOptions": {
|
||||
"args": [
|
||||
"headless",
|
||||
"no-sandbox"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -8,20 +8,19 @@
|
|||
"scripts": {
|
||||
"postinstall": "lerna bootstrap",
|
||||
"storybook": "start-storybook -p 6006 -c .storybook --ci",
|
||||
"storybook:build": "build-storybook",
|
||||
"storybook:serve": "http-server storybook-static",
|
||||
"test": "jest -c config/jest.config.js",
|
||||
"test:update": "npm run test -- -u",
|
||||
"test-e2e": "nightwatch --env localhost",
|
||||
"eslint": "eslint -c .eslintrc packages/**/*.{ts,tsx}",
|
||||
"prettier": "prettier --check packages/**/*.ts",
|
||||
"prettier:fix": "prettier --check --write packages/**/*.ts",
|
||||
"lint": "npm run eslint && npm run prettier",
|
||||
"build:module": "lerna run build",
|
||||
"clean:module": "lerna run clean",
|
||||
"serve": "http-server dist/client",
|
||||
"ci:lint": "cross-env CI=true npm run lint",
|
||||
"ci:test": "cross-env CI=true npm run test",
|
||||
"ci:test-e2e": "nightwatch",
|
||||
"ci:test-e2e": "nightwatch --env ci",
|
||||
"ci:build": "build-storybook",
|
||||
"ci:increase-version": "lerna version --no-git-tag-version --no-push --yes"
|
||||
},
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
||||
import { is } from 'ramda';
|
||||
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||
import cx from 'classnames';
|
||||
|
|
|
@ -4,7 +4,6 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|||
import cx from 'classnames';
|
||||
import { History } from 'history';
|
||||
|
||||
import Button from '@treejs/components/Button';
|
||||
import { isNilOrEmpty } from '@treejs/utils';
|
||||
|
||||
import Modals from '../../Modal/components/Modals';
|
||||
|
|
|
@ -1,25 +1,35 @@
|
|||
import { initLocalization } from '@treejs/localization/init';
|
||||
|
||||
import { getPluralMessage } from '../message';
|
||||
|
||||
describe('Localization message', () => {
|
||||
initLocalization('cs', {
|
||||
cs: {
|
||||
char: 'znak',
|
||||
char_2: 'znaky',
|
||||
char_5: 'znaku',
|
||||
},
|
||||
});
|
||||
|
||||
describe('getPluralMessage', () => {
|
||||
it('should return char_5 for 0 count', () => {
|
||||
expect(getPluralMessage(0)('common:char')).toBe('common:char_5');
|
||||
expect(getPluralMessage(0)('char')).toBe('znaku');
|
||||
});
|
||||
it('should return char for 1 count', () => {
|
||||
expect(getPluralMessage(1)('common:char')).toBe('common:char');
|
||||
expect(getPluralMessage(-1)('common:char')).toBe('common:char');
|
||||
expect(getPluralMessage(1)('char')).toBe('znak');
|
||||
expect(getPluralMessage(-1)('char')).toBe('znak');
|
||||
});
|
||||
it('should return char_2 for 2 count', () => {
|
||||
expect(getPluralMessage(2)('common:char')).toBe('common:char_2');
|
||||
expect(getPluralMessage(-2)('common:char')).toBe('common:char_2');
|
||||
expect(getPluralMessage(2)('char')).toBe('znaky');
|
||||
expect(getPluralMessage(-2)('char')).toBe('znaky');
|
||||
});
|
||||
it('should return char_5 for 5 count', () => {
|
||||
expect(getPluralMessage(5)('common:char')).toBe('common:char_5');
|
||||
expect(getPluralMessage(-5)('common:char')).toBe('common:char_5');
|
||||
expect(getPluralMessage(5)('char')).toBe('znaku');
|
||||
expect(getPluralMessage(-5)('char')).toBe('znaku');
|
||||
});
|
||||
it('should return char_5 for 10 count', () => {
|
||||
expect(getPluralMessage(10)('common:char')).toBe('common:char_5');
|
||||
expect(getPluralMessage(-10)('common:char')).toBe('common:char_5');
|
||||
expect(getPluralMessage(10)('char')).toBe('znaku');
|
||||
expect(getPluralMessage(-10)('char')).toBe('znaku');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import React from 'react';
|
||||
|
||||
import { combineReducers, configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';
|
||||
import config from 'config/config.json';
|
||||
import { Provider } from 'react-redux';
|
||||
|
||||
import { API_REDUCER_NAME } from '@treejs/api/constants';
|
||||
|
@ -17,7 +18,7 @@ const store = configureStore({
|
|||
middleware: [
|
||||
...getDefaultMiddleware({ thunk: true }).concat(
|
||||
apiMiddleware({
|
||||
BASE_ENDPOINT_URL: 'https://jsonplaceholder.typicode.com',
|
||||
BASE_ENDPOINT_URL: config.BASE_ENDPOINT_URL,
|
||||
})
|
||||
),
|
||||
],
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
"jsx": "react",
|
||||
"baseUrl": "./",
|
||||
"paths": {
|
||||
"config/*": ["./config/*"],
|
||||
"@treejs/components/*": ["./packages/components/src/*"],
|
||||
"@treejs/api/*": ["./packages/api/src/*"],
|
||||
"@treejs/auth/*": ["./packages/auth/src/*"],
|
||||
|
|
Loading…
Add table
Reference in a new issue