Skip to content

Commit c716cd5

Browse files
authored
refactor: updated driver to use modules/webpack/eslint (#32)
1 parent 6790376 commit c716cd5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+14368
-2930
lines changed

.vscode/extensions.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"recommendations": [
3+
"dbaeumer.vscode-eslint"
4+
]
5+
}

bindings/src/Capgemini.PowerApps.SpecFlowBindings/Capgemini.PowerApps.SpecFlowBindings.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@
212212
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
213213
<Target Name="AfterBuild">
214214
<Exec Command="npm run build" WorkingDirectory="../../../driver" />
215-
<Copy SourceFiles="../../../driver/dist/specflow.driver.js" DestinationFolder="bin/lib" />
215+
<Copy SourceFiles="../../../driver/dist/driver.js" DestinationFolder="bin/lib" />
216216
</Target>
217217
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
218218
<PropertyGroup>

bindings/src/Capgemini.PowerApps.SpecFlowBindings/Capgemini.PowerApps.SpecFlowBindings.nuspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<files>
1919
<file src="content\**\*" target="content"/>
2020
<file src="build\**" target="build"/>
21-
<file src="bin\lib\specflow.driver.js" target="build"/>
21+
<file src="bin\lib\driver.js" target="build"/>
2222
<file src="icon.png" target="images" />
2323
</files>
2424
</package>

bindings/src/Capgemini.PowerApps.SpecFlowBindings/TestDriver.cs

+8-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@
1212
/// </summary>
1313
public class TestDriver : ITestDriver
1414
{
15-
private const string DriverScriptPath = "specflow.driver.js";
16-
private const string TestDriverReference = "top.testDriver";
15+
private const string DriverScriptPath = "driver.js";
16+
private const string TestDriverReference = "top.driver";
1717
private const string ErrorPrefix = "driver encountered an error";
18+
private const string LibraryNamespace = "PowerAppsSpecFlowBindings";
1819

1920
private readonly IJavaScriptExecutor javascriptExecutor;
2021

@@ -81,7 +82,11 @@ private void Initialise()
8182
{
8283
this.javascriptExecutor.ExecuteScript(
8384
$"{File.ReadAllText(this.FilePath)}\n" +
84-
$"top.testDriver = new Capgemini.Dynamics.Testing.TestDriver();");
85+
$@"var recordRepository = new {LibraryNamespace}.RecordRepository(Xrm.WebApi.online);
86+
var metadataRepository = new {LibraryNamespace}.MetadataRepository(Xrm.WebApi.online);
87+
var deepInsertService = new {LibraryNamespace}.DeepInsertService(metadataRepository, recordRepository);
88+
var dataManager = new {LibraryNamespace}.DataManager(recordRepository, deepInsertService);
89+
{TestDriverReference} = new {LibraryNamespace}.Driver(dataManager);");
8590
}
8691
}
8792
}

bindings/tests/Capgemini.PowerApps.SpecFlowBindings.UiTests/Capgemini.PowerApps.SpecFlowBindings.UiTests.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@
184184
</ItemGroup>
185185
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
186186
<Target Name="AfterBuild">
187-
<Copy SourceFiles="..\..\src\Capgemini.PowerApps.SpecFlowBindings\bin\lib\specflow.driver.js" DestinationFolder="$(OutputPath)" />
187+
<Copy SourceFiles="..\..\src\Capgemini.PowerApps.SpecFlowBindings\bin\lib\driver.js" DestinationFolder="$(OutputPath)" />
188188
</Target>
189189
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
190190
<PropertyGroup>

driver/.eslintignore

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# don't ever lint node_modules
2+
node_modules
3+
# don't lint build output (make sure it's set to your correct build folder name)
4+
dist
5+
# don't lint nyc coverage output
6+
coverage
7+
# don't lint js
8+
**/*.js

driver/.eslintrc.js

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
module.exports = {
2+
parser: "@typescript-eslint/parser",
3+
parserOptions: {
4+
ecmaVersion: 2020,
5+
sourceType: "module",
6+
project: ['./tsconfig.json'],
7+
},
8+
plugins: [
9+
'jasmine'
10+
],
11+
extends: [
12+
'plugin:jasmine/recommended',
13+
'airbnb-typescript/base',
14+
],
15+
env: {
16+
jasmine: true,
17+
},
18+
globals: {
19+
"Xrm": "readonly",
20+
"window": "readonly",
21+
"fetch": "readonly",
22+
},
23+
rules: {
24+
},
25+
};

driver/.gitattributes

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.ts text eol=lf

driver/.gitignore

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ node_modules/
66
/tests/
77

88
# Test output
9-
/coverage/
9+
test_results/
1010

1111
# IDE settings
12-
/.vscode/
12+
/.vscode/
13+

driver/karma.conf.js

+31-22
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,44 @@
11
module.exports = function (config) {
22
config.set({
3-
frameworks: ['jasmine'],
4-
browsers: ['ChromeDebugging'],
3+
frameworks: ['jasmine', 'karma-typescript'],
54
files: [
6-
'./dist/*.js',
7-
'./tests/**/*.js',
8-
'./node_modules/jasmine-ajax/lib/mock-ajax.js'
5+
'src/**/*.ts',
6+
'test/**/*.ts'
97
],
10-
preprocessors: {
11-
'./dist/specflow.driver.js': ['coverage'],
12-
'**/*.js': ['sourcemap']
8+
mime: {
9+
'text/x-typescript': ['ts', 'tsx']
1310
},
14-
customLaunchers: {
15-
ChromeDebugging: {
16-
base: 'Chrome',
17-
flags: ['--remote-debugging-port=9333']
18-
}
11+
preprocessors: {
12+
'**/*.ts': 'karma-typescript'
1913
},
20-
reporters: ['progress', 'coverage', 'remap-coverage', 'junit'],
2114
junitReporter: {
22-
outputDir: './tests/reports',
23-
suite: 'power-apps-specflow-bindings',
15+
outputDir: 'test_results/reports',
16+
suite: 'powerapps-specflow-bindings',
2417
useBrowserName: true,
2518
},
26-
coverageReporter: {
27-
type: 'in-memory'
19+
reporters: ['progress', 'karma-typescript', 'junit'],
20+
browsers: ['Chrome'],
21+
mime: {
22+
'text/x-typescript': ['ts', 'tsx']
2823
},
29-
remapCoverageReporter: {
30-
html: './tests/reports/coverage/html',
31-
cobertura: './tests/reports/coverage/cobertura.xml',
32-
lcovonly: './tests/reports/coverage/lcov.info',
24+
karmaTypescriptConfig: {
25+
reports:
26+
{
27+
html: {
28+
directory: 'test_results/coverage',
29+
subdirectory: 'html'
30+
},
31+
lcovonly: {
32+
directory: 'test_results/coverage',
33+
subdirectory: 'lcov',
34+
filename: 'lcov.info',
35+
},
36+
cobertura: {
37+
directory: 'test_results/coverage',
38+
subdirectory: 'cobertura',
39+
filename: 'cobertura.xml',
40+
}
41+
}
3342
}
3443
});
3544
};

0 commit comments

Comments
 (0)