GithubHelp home page GithubHelp logo

Comments (14)

tdrhq avatar tdrhq commented on May 5, 2024 2

Run "pip install pillow". I should update the code to show a better error message with installation instructions when not available.

from screenshot-tests-for-android.

tdrhq avatar tdrhq commented on May 5, 2024 1

ah it looks like you're not calling ScreenshotRunner.onDestroy() from the test runner. I should make it more obvious when this happens.

from screenshot-tests-for-android.

gallal avatar gallal commented on May 5, 2024

running pip install image as recommended here fixes this error but introduces a new one :)

New stacktrace

Incremental java compilation is an incubating feature.
:clean
:app:clean
:app:recordMode
:app:clearScreenshots
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAnimatedVectorDrawable2330Library
:app:prepareComAndroidSupportAppcompatV72330Library
:app:prepareComAndroidSupportDesign2330Library
:app:prepareComAndroidSupportRecyclerviewV72330Library
:app:preDebugAndroidTestBuild UP-TO-DATE
:app:prepareComAndroidSupportSupportV42330Library
:app:prepareComAndroidSupportSupportVectorDrawable2330Library
:app:prepareComJakewhartonTimberTimber412Library
:app:prepareComSquareupLeakcanaryLeakcanaryAndroid131Library
:app:prepareInfoAndroid15NucleusNucleusSupportV7300Library
:app:prepareIoReactivexRxandroid120Library
:app:prepareDebugDependencies
:app:compileDebugAidl
:app:compileDebugRenderscript
:app:generateDebugBuildConfig
:app:mergeDebugShaders
:app:compileDebugShaders
:app:generateDebugAssets
:app:mergeDebugAssets
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources
:app:mergeDebugResources
:app:processDebugManifest
:app:processDebugResources
:app:generateDebugSources
:app:incrementalDebugJavaCompilationSafeguard
:app:compileDebugKotlin
...
:app:compileDebugJavaWithJavac
:app:compileDebugJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.).
:app:compileDebugKotlinAfterJava
...
>:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources
:app:prePackageMarkerForDebug
:app:unzipJacocoAgent
:app:transformClassesWithJacocoForDebug
:app:transformClassesWithDexForDebug
Result compacted from 8520.3KiB to 6582.5KiB to save 1937.8KiB
Merged dex #1 (5 defs/15.3KiB)
Merged dex #2 (329 defs/536.4KiB)
Merged dex #3 (182 defs/255.7KiB)
Merged dex #4 (134 defs/303.8KiB)
Merged dex #5 (770 defs/937.2KiB)
Merged dex #6 (17 defs/48.5KiB)
Merged dex #7 (5 defs/9.6KiB)
Merged dex #8 (67 defs/58.3KiB)
Merged dex #9 (37 defs/18.1KiB)
Merged dex #10 (1717 defs/1878.8KiB)
Merged dex #11 (220 defs/251.6KiB)
Merged dex #12 (3 defs/4.1KiB)
Merged dex #13 (333 defs/262.4KiB)
Merged dex #14 (10 defs/7.8KiB)
Merged dex #15 (128 defs/234.4KiB)
Merged dex #16 (6 defs/1.6KiB)
Merged dex #17 (202 defs/134.1KiB)
Merged dex #18 (299 defs/854.9KiB)
Merged dex #19 (8 defs/17.1KiB)
Merged dex #20 (19 defs/10.2KiB)
Merged dex #21 (106 defs/198.5KiB)
Merged dex #22 (33 defs/29.6KiB)
Merged dex #23 (931 defs/763.4KiB)
Merged dex #24 (41 defs/6.5KiB)
Result is 5602 defs/6582.5KiB. Took 1.3s
:app:mergeDebugJniLibFolders
:app:transformNative_libsWithMergeJniLibsForDebug
:app:processDebugJavaRes UP-TO-DATE
:app:transformResourcesWithMergeJavaResForDebug
:app:validateDebugSigning
:app:packageDebug
:app:zipalignDebug
:app:assembleDebug
:app:prepareComAndroidSupportTestEspressoEspressoContrib222Library
:app:prepareComAndroidSupportTestEspressoEspressoCore222Library
:app:prepareComAndroidSupportTestEspressoEspressoIdlingResource222Library
:app:prepareComAndroidSupportTestEspressoEspressoIntents222Library
:app:prepareComAndroidSupportTestExposedInstrumentationApiPublish05Library
:app:prepareComAndroidSupportTestRules05Library
:app:prepareComAndroidSupportTestRunner05Library
:app:prepareComAndroidSupportTestUiautomatorUiautomatorV18212Library
:app:prepareDebugAndroidTestDependencies
:app:compileDebugAndroidTestAidl
:app:processDebugAndroidTestManifest
:app:compileDebugAndroidTestRenderscript
:app:generateDebugAndroidTestBuildConfig
:app:mergeDebugAndroidTestShaders
:app:compileDebugAndroidTestShaders
:app:generateDebugAndroidTestAssets
:app:mergeDebugAndroidTestAssets
:app:generateDebugAndroidTestResValues UP-TO-DATE
:app:generateDebugAndroidTestResources
:app:mergeDebugAndroidTestResources
:app:processDebugAndroidTestResources
:app:generateDebugAndroidTestSources
:app:incrementalDebugAndroidTestJavaCompilationSafeguard
:app:compileDebugAndroidTestKotlin
...
:app:compileDebugAndroidTestJavaWithJavac
:app:compileDebugAndroidTestJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.).
:app:compileDebugAndroidTestKotlinAfterJava
...
:app:compileDebugAndroidTestNdk UP-TO-DATE
:app:compileDebugAndroidTestSources
:app:prePackageMarkerForDebugAndroidTest
:app:transformClassesWithDexForDebugAndroidTest
...
Result compacted from 7152.9KiB to 5534.2KiB to save 1618.7KiB
Merged dex #1 (63 defs/79.8KiB)
Merged dex #2 (252 defs/277.8KiB)
Merged dex #3 (770 defs/937.2KiB)
Merged dex #4 (2 defs/1.0KiB)
Merged dex #5 (22 defs/37.8KiB)
Merged dex #6 (108 defs/113.8KiB)
Merged dex #7 (27 defs/29.1KiB)
Merged dex #8 (2002 defs/2162.6KiB)
Merged dex #9 (4 defs/4.1KiB)
Merged dex #10 (49 defs/39.5KiB)
Merged dex #11 (84 defs/126.7KiB)
Merged dex #12 (29 defs/39.0KiB)
Merged dex #13 (36 defs/19.8KiB)
Merged dex #14 (38 defs/62.9KiB)
Merged dex #15 (381 defs/515.5KiB)
Merged dex #16 (9 defs/9.6KiB)
Merged dex #17 (45 defs/38.2KiB)
Merged dex #18 (5 defs/2.9KiB)
Merged dex #19 (35 defs/54.8KiB)
Merged dex #20 (333 defs/262.4KiB)
Merged dex #21 (2 defs/15.7KiB)
Merged dex #22 (15 defs/4.9KiB)
Merged dex #23 (34 defs/8.8KiB)
Merged dex #24 (286 defs/238.9KiB)
Merged dex #25 (694 defs/665.8KiB)
Merged dex #26 (37 defs/27.0KiB)
Merged dex #27 (6 defs/11.3KiB)
Result is 5368 defs/5534.2KiB. Took 0.7s
:app:mergeDebugAndroidTestJniLibFolders
:app:transformNative_libsWithMergeJniLibsForDebugAndroidTest
:app:processDebugAndroidTestJavaRes UP-TO-DATE
:app:transformResourcesWithMergeJavaResForDebugAndroidTest
:app:packageDebugAndroidTest
:app:assembleDebugAndroidTest
:app:connectedDebugAndroidTest
:app:createDebugAndroidTestCoverageReport
:app:connectedAndroidTest
:app:pullScreenshots
768 KB/s (8614 bytes in 0.010s)
Traceback (most recent call last):
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/Users/gallal/.gradle/caches/modules-2/files-2.1/com.facebook.testing.screenshot/plugin/0.4.1/95bb67a888bc9791a5b8e3a575c98b38bfd9bc75/plugin-0.4.1.jar/android_screenshot_tests/pull_screenshots.py", line 275, in <module>
  File "/Users/gallal/.gradle/caches/modules-2/files-2.1/com.facebook.testing.screenshot/plugin/0.4.1/95bb67a888bc9791a5b8e3a575c98b38bfd9bc75/plugin-0.4.1.jar/android_screenshot_tests/pull_screenshots.py", line 272, in main
  File "/Users/gallal/.gradle/caches/modules-2/files-2.1/com.facebook.testing.screenshot/plugin/0.4.1/95bb67a888bc9791a5b8e3a575c98b38bfd9bc75/plugin-0.4.1.jar/android_screenshot_tests/pull_screenshots.py", line 203, in pull_screenshots
  File "/Users/gallal/.gradle/caches/modules-2/files-2.1/com.facebook.testing.screenshot/plugin/0.4.1/95bb67a888bc9791a5b8e3a575c98b38bfd9bc75/plugin-0.4.1.jar/android_screenshot_tests/pull_screenshots.py", line 178, in pull_filtered
  File "/Users/gallal/.gradle/caches/modules-2/files-2.1/com.facebook.testing.screenshot/plugin/0.4.1/95bb67a888bc9791a5b8e3a575c98b38bfd9bc75/plugin-0.4.1.jar/android_screenshot_tests/metadata.py", line 26, in filter_screenshots
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1182, in parse
    tree.parse(source, parser)
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 657, in parse
    self._root = parser.close()
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1654, in close
    self._raiseerror(v)
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1506, in _raiseerror
    raise err
xml.etree.ElementTree.ParseError: no element found: line 1, column 8614
:app:pullScreenshots FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:pullScreenshots'.
> Process 'command 'python'' finished with non-zero exit value 1

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:pullScreenshots'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:68)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
        at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
        at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
        at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
        at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
        at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
        at org.gradle.internal.Factories$1.create(Factories.java:22)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
        at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46)
        at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51)
        at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28)
        at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
        at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:241)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:214)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:207)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
        at org.gradle.launcher.Main.doAction(Main.java:33)
        at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:55)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:36)
        at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
        at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
Caused by: org.gradle.process.internal.ExecException: Process 'command 'python'' finished with non-zero exit value 1
        at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:367)
        at org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:31)
        at org.gradle.api.internal.file.DefaultFileOperations.exec(DefaultFileOperations.java:176)
        at org.gradle.api.internal.project.AbstractProject.exec(AbstractProject.java:841)
        at org.gradle.api.internal.project.AbstractProject.exec(AbstractProject.java:837)
        at org.gradle.api.Project$exec$3.call(Unknown Source)
        at com.facebook.testing.screenshot.build.ScreenshotsPlugin$_apply_closure1.doCall(ScreenshotsPlugin.groovy:42)
        at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:554)
        at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:535)
        at org.gradle.api.internal.tasks.TaskMutator$1.execute(TaskMutator.java:77)
        at org.gradle.api.internal.tasks.TaskMutator$1.execute(TaskMutator.java:73)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
        ... 60 more


BUILD FAILED

Total time: 1 mins 45.712 secs

from screenshot-tests-for-android.

tdrhq avatar tdrhq commented on May 5, 2024

The new error message about "no element found", was that on Windows or Mac or both?

from screenshot-tests-for-android.

tdrhq avatar tdrhq commented on May 5, 2024

actually the stack trace looks like Mac. I'm looking into it, and I might ask you from extra information.

from screenshot-tests-for-android.

tdrhq avatar tdrhq commented on May 5, 2024

echo $TMPDIR,

inside that directory, you should see some directories prefixed with screenshots. Look at the one that was created last. Inside that there should be a metadata.xml file. Can you either send me the XML file, or if you can't (because it has your test names etc), tell me if the file looks like a proper XML or if there's something obviously corrupt about it.

from screenshot-tests-for-android.

gallal avatar gallal commented on May 5, 2024

The file is present and is mostly valid. It seems to finish prematurely; it starts with <?xml version='1.0' encoding='utf-8' ?><screenshots><screenshot> but ends with </screenshot> and is missing the final </screenshots>

from screenshot-tests-for-android.

tdrhq avatar tdrhq commented on May 5, 2024

Added a more useful error message when the metadata file is corrupt because of not calling onDestroy 8cb937d

from screenshot-tests-for-android.

gallal avatar gallal commented on May 5, 2024

Thanks very much, very interesting!

I had a custom test runner setup with proper calls to ScreenshotRunner.onCreate(this, args) and ScreenshotRunner.onDestroy() as shown below

public class AppTestRunner extends AndroidJUnitRunner {
  @Override
  public void onCreate(Bundle args) {
    ScreenshotRunner.onCreate(this, args);
    super.onCreate(args);
  }

  @Override
  public void onDestroy() { // should be finish(int resultCode, Bundle results)
    ScreenshotRunner.onDestroy();
    super.onDestroy(); // should be super.finish(resultCode, results);
  }
}

Issue - I was erroneously overriding onDestroy()instead of finish(int resultCode, Bundle results)
Fix - override finish(int resultCode, Bundle results) instead

As an Android developer, I instinctively pair any call to 'onCreate' with 'onDestroy', plus the fact that the ScreenshotRunner method is called 'onDestroy' made this more confusing. I recommend either deprecating onDestroy() and pointing it to a newly created function called finish or updating the documentation on the Github readme and the .IO docs site to make this clear.

from screenshot-tests-for-android.

tdrhq avatar tdrhq commented on May 5, 2024

Oh. I definitely badly named this. I'll document this.

from screenshot-tests-for-android.

SergeyShustikov avatar SergeyShustikov commented on May 5, 2024

Is there are any receipt to fix this error? I got the same error.

from screenshot-tests-for-android.

chairles avatar chairles commented on May 5, 2024

I've got same error on Win7 and Win10 here, any help?

from screenshot-tests-for-android.

xiphirx avatar xiphirx commented on May 5, 2024

Issue is now obsolete since hierarchy output has been changed to json

from screenshot-tests-for-android.

MiguelSOliveira avatar MiguelSOliveira commented on May 5, 2024

Running: ./gradlew clean recordDebugAndroidTestScreenshotTest

I'm having this exact error "ImportError: No module named PIL" and when I run:

pip install pillow i get:
Requirement already satisfied: pillow in /usr/local/lib/python3.7/site-packages (6.2.2)

pip install image
Requirement already satisfied: image in /usr/local/lib/python3.7/site-packages (1.5.32)
Requirement already satisfied: pillow in /usr/local/lib/python3.7/site-packages (from image) (6.2.2)
Requirement already satisfied: django in /usr/local/lib/python3.7/site-packages (from image) (3.0.6)
Requirement already satisfied: six in /usr/local/lib/python3.7/site-packages (from image) (1.15.0)
Requirement already satisfied: sqlparse>=0.2.2 in /usr/local/lib/python3.7/site-packages (from django->image) (0.3.1)
Requirement already satisfied: pytz in /usr/local/lib/python3.7/site-packages (from django->image) (2020.1)
Requirement already satisfied: asgiref~=3.2 in /usr/local/lib/python3.7/site-packages (from django->image) (3.2.7)

Is this not supposed to work with python 3?

from screenshot-tests-for-android.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.