Fitnesse - 17.1 - File Upload Objects

After upgrading to 17.1 Appian (and have now also upgraded to the latest version of Fitnesse) we're having issues with a file upload section in our scripts.

Accessing the field using the old way (POPULATE FIELD | example field | with |..) no longer seems to work for our page.

I appear to be able to access (it's at least not failing due to not finding the field) the new upload field using the below statement (or just using index on page seems to pick it up as well) but it's throwing an error.

|populate |FILE_UPLOAD |field |[1] |with |C:\test.doc |

Error message: Invalid for a READONLY Field

Any clues on a possible solution?

Thanks in advance :)

  Discussion posts and replies are publicly visible

Parents
  • Running the scenario manually in Appian works fine (ie. we can upload an attachment, etc.).

    Example of fitnesse code (running in Chrome) is below. The column header of the upload field is 'File Upload' and is what we previously used to use prior to the upgrade (using 'populate field'). That was failing to find the field after upgrading so we switched to the script below.

    |populate field |Opex |with |$45000.00 |
    |populate |FILE_UPLOAD |field |[1] |with |C:\AutomatedTesting\FitNesseForAppian\docs\sample.docx |
    |click on button |View Summary |
    |click on button |Submit |
    |click on button |Yes |

    Error log:

    2017-04-12 13:46:58,461 [main] DEBUG com.appiancorp.ps.automatedtest.tempo.interfaces.TempoTextField - POPULATION [$45000.00]
    2017-04-12 13:46:59,487 [main] ERROR com.appiancorp.ps.automatedtest.exception.ExceptionBuilder - Populate Field - [1] - C:\AutomatedTesting\FitNesseForAppian\docs\sample.docx
    java.lang.IllegalArgumentException: Invalid for a READONLY Field
    at com.appiancorp.ps.automatedtest.tempo.interfaces.TempoReadOnlyField.populate(TempoReadOnlyField.java:27)
    at com.appiancorp.ps.automatedtest.tempo.interfaces.TempoFieldFactory.populate(TempoFieldFactory.java:67)
    at com.appiancorp.ps.automatedtest.tempo.interfaces.TempoFieldFactory.populateMultiple(TempoFieldFactory.java:53)
    at com.appiancorp.ps.automatedtest.fixture.TempoFixture.populateFieldWith(TempoFixture.java:805)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at fitnesse.slim.fixtureInteraction.DefaultInteraction.methodInvoke(DefaultInteraction.java:81)
    at fitnesse.slim.MethodExecutor.callMethod(MethodExecutor.java:57)
    at fitnesse.slim.MethodExecutor.invokeMethod(MethodExecutor.java:38)
    at fitnesse.slim.MethodExecutor.findAndInvoke(MethodExecutor.java:72)
    at fitnesse.slim.FixtureMethodExecutor.execute(FixtureMethodExecutor.java:20)
    at fitnesse.slim.StatementExecutor.getMethodExecutionResult(StatementExecutor.java:135)
    at fitnesse.slim.StatementExecutor.call(StatementExecutor.java:108)
    at fitnesse.slim.instructions.CallInstruction.executeInternal(CallInstruction.java:35)
    at fitnesse.slim.instructions.Instruction.execute(Instruction.java:29)
    at fitnesse.slim.ListExecutor$Executive.executeStatement(ListExecutor.java:49)
    at fitnesse.slim.ListExecutor$Executive.executeStatements(ListExecutor.java:43)
    at fitnesse.slim.ListExecutor.execute(ListExecutor.java:85)
    at fitnesse.slim.SlimServer.executeInstructions(SlimServer.java:84)
    at fitnesse.slim.SlimServer.processOneSetOfInstructions(SlimServer.java:77)
    at fitnesse.slim.SlimServer.tryProcessInstructions(SlimServer.java:64)
    at fitnesse.slim.SlimServer.serve(SlimServer.java:49)
    at fitnesse.slim.SlimService.handle(SlimService.java:154)
    at fitnesse.slim.SlimService.acceptOne(SlimService.java:162)
    at fitnesse.slim.SlimService.accept(SlimService.java:124)
    at fitnesse.slim.SlimService.startWithFactory(SlimService.java:76)
    at fitnesse.slim.SlimService.main(SlimService.java:56)
    2017-04-12 13:47:09,518 [main] ERROR com.appiancorp.ps.automatedtest.exception.ExceptionBuilder - Screenshot error
    java.lang.IllegalArgumentException: Invalid for a READONLY Field
    at com.appiancorp.ps.automatedtest.tempo.interfaces.TempoReadOnlyField.populate(TempoReadOnlyField.java:27)
    at com.appiancorp.ps.automatedtest.tempo.interfaces.TempoFieldFactory.populate(TempoFieldFactory.java:67)
    at com.appiancorp.ps.automatedtest.tempo.interfaces.TempoFieldFactory.populateMultiple(TempoFieldFactory.java:53)
    at com.appiancorp.ps.automatedtest.fixture.TempoFixture.populateFieldWith(TempoFixture.java:805)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at fitnesse.slim.fixtureInteraction.DefaultInteraction.methodInvoke(DefaultInteraction.java:81)
    at fitnesse.slim.MethodExecutor.callMethod(MethodExecutor.java:57)
    at fitnesse.slim.MethodExecutor.invokeMethod(MethodExecutor.java:38)
    at fitnesse.slim.MethodExecutor.findAndInvoke(MethodExecutor.java:72)
    at fitnesse.slim.FixtureMethodExecutor.execute(FixtureMethodExecutor.java:20)
    at fitnesse.slim.StatementExecutor.getMethodExecutionResult(StatementExecutor.java:135)
    at fitnesse.slim.StatementExecutor.call(StatementExecutor.java:108)
    at fitnesse.slim.instructions.CallInstruction.executeInternal(CallInstruction.java:35)
    at fitnesse.slim.instructions.Instruction.execute(Instruction.java:29)
    at fitnesse.slim.ListExecutor$Executive.executeStatement(ListExecutor.java:49)
    at fitnesse.slim.ListExecutor$Executive.executeStatements(ListExecutor.java:43)
    at fitnesse.slim.ListExecutor.execute(ListExecutor.java:85)
    at fitnesse.slim.SlimServer.executeInstructions(SlimServer.java:84)
    at fitnesse.slim.SlimServer.processOneSetOfInstructions(SlimServer.java:77)
    at fitnesse.slim.SlimServer.tryProcessInstructions(SlimServer.java:64)
    at fitnesse.slim.SlimServer.serve(SlimServer.java:49)
    at fitnesse.slim.SlimService.handle(SlimService.java:154)
    at fitnesse.slim.SlimService.acceptOne(SlimService.java:162)
    at fitnesse.slim.SlimService.accept(SlimService.java:124)
    at fitnesse.slim.SlimService.startWithFactory(SlimService.java:76)
    at fitnesse.slim.SlimService.main(SlimService.java:56)
Reply
  • Running the scenario manually in Appian works fine (ie. we can upload an attachment, etc.).

    Example of fitnesse code (running in Chrome) is below. The column header of the upload field is 'File Upload' and is what we previously used to use prior to the upgrade (using 'populate field'). That was failing to find the field after upgrading so we switched to the script below.

    |populate field |Opex |with |$45000.00 |
    |populate |FILE_UPLOAD |field |[1] |with |C:\AutomatedTesting\FitNesseForAppian\docs\sample.docx |
    |click on button |View Summary |
    |click on button |Submit |
    |click on button |Yes |

    Error log:

    2017-04-12 13:46:58,461 [main] DEBUG com.appiancorp.ps.automatedtest.tempo.interfaces.TempoTextField - POPULATION [$45000.00]
    2017-04-12 13:46:59,487 [main] ERROR com.appiancorp.ps.automatedtest.exception.ExceptionBuilder - Populate Field - [1] - C:\AutomatedTesting\FitNesseForAppian\docs\sample.docx
    java.lang.IllegalArgumentException: Invalid for a READONLY Field
    at com.appiancorp.ps.automatedtest.tempo.interfaces.TempoReadOnlyField.populate(TempoReadOnlyField.java:27)
    at com.appiancorp.ps.automatedtest.tempo.interfaces.TempoFieldFactory.populate(TempoFieldFactory.java:67)
    at com.appiancorp.ps.automatedtest.tempo.interfaces.TempoFieldFactory.populateMultiple(TempoFieldFactory.java:53)
    at com.appiancorp.ps.automatedtest.fixture.TempoFixture.populateFieldWith(TempoFixture.java:805)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at fitnesse.slim.fixtureInteraction.DefaultInteraction.methodInvoke(DefaultInteraction.java:81)
    at fitnesse.slim.MethodExecutor.callMethod(MethodExecutor.java:57)
    at fitnesse.slim.MethodExecutor.invokeMethod(MethodExecutor.java:38)
    at fitnesse.slim.MethodExecutor.findAndInvoke(MethodExecutor.java:72)
    at fitnesse.slim.FixtureMethodExecutor.execute(FixtureMethodExecutor.java:20)
    at fitnesse.slim.StatementExecutor.getMethodExecutionResult(StatementExecutor.java:135)
    at fitnesse.slim.StatementExecutor.call(StatementExecutor.java:108)
    at fitnesse.slim.instructions.CallInstruction.executeInternal(CallInstruction.java:35)
    at fitnesse.slim.instructions.Instruction.execute(Instruction.java:29)
    at fitnesse.slim.ListExecutor$Executive.executeStatement(ListExecutor.java:49)
    at fitnesse.slim.ListExecutor$Executive.executeStatements(ListExecutor.java:43)
    at fitnesse.slim.ListExecutor.execute(ListExecutor.java:85)
    at fitnesse.slim.SlimServer.executeInstructions(SlimServer.java:84)
    at fitnesse.slim.SlimServer.processOneSetOfInstructions(SlimServer.java:77)
    at fitnesse.slim.SlimServer.tryProcessInstructions(SlimServer.java:64)
    at fitnesse.slim.SlimServer.serve(SlimServer.java:49)
    at fitnesse.slim.SlimService.handle(SlimService.java:154)
    at fitnesse.slim.SlimService.acceptOne(SlimService.java:162)
    at fitnesse.slim.SlimService.accept(SlimService.java:124)
    at fitnesse.slim.SlimService.startWithFactory(SlimService.java:76)
    at fitnesse.slim.SlimService.main(SlimService.java:56)
    2017-04-12 13:47:09,518 [main] ERROR com.appiancorp.ps.automatedtest.exception.ExceptionBuilder - Screenshot error
    java.lang.IllegalArgumentException: Invalid for a READONLY Field
    at com.appiancorp.ps.automatedtest.tempo.interfaces.TempoReadOnlyField.populate(TempoReadOnlyField.java:27)
    at com.appiancorp.ps.automatedtest.tempo.interfaces.TempoFieldFactory.populate(TempoFieldFactory.java:67)
    at com.appiancorp.ps.automatedtest.tempo.interfaces.TempoFieldFactory.populateMultiple(TempoFieldFactory.java:53)
    at com.appiancorp.ps.automatedtest.fixture.TempoFixture.populateFieldWith(TempoFixture.java:805)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at fitnesse.slim.fixtureInteraction.DefaultInteraction.methodInvoke(DefaultInteraction.java:81)
    at fitnesse.slim.MethodExecutor.callMethod(MethodExecutor.java:57)
    at fitnesse.slim.MethodExecutor.invokeMethod(MethodExecutor.java:38)
    at fitnesse.slim.MethodExecutor.findAndInvoke(MethodExecutor.java:72)
    at fitnesse.slim.FixtureMethodExecutor.execute(FixtureMethodExecutor.java:20)
    at fitnesse.slim.StatementExecutor.getMethodExecutionResult(StatementExecutor.java:135)
    at fitnesse.slim.StatementExecutor.call(StatementExecutor.java:108)
    at fitnesse.slim.instructions.CallInstruction.executeInternal(CallInstruction.java:35)
    at fitnesse.slim.instructions.Instruction.execute(Instruction.java:29)
    at fitnesse.slim.ListExecutor$Executive.executeStatement(ListExecutor.java:49)
    at fitnesse.slim.ListExecutor$Executive.executeStatements(ListExecutor.java:43)
    at fitnesse.slim.ListExecutor.execute(ListExecutor.java:85)
    at fitnesse.slim.SlimServer.executeInstructions(SlimServer.java:84)
    at fitnesse.slim.SlimServer.processOneSetOfInstructions(SlimServer.java:77)
    at fitnesse.slim.SlimServer.tryProcessInstructions(SlimServer.java:64)
    at fitnesse.slim.SlimServer.serve(SlimServer.java:49)
    at fitnesse.slim.SlimService.handle(SlimService.java:154)
    at fitnesse.slim.SlimService.acceptOne(SlimService.java:162)
    at fitnesse.slim.SlimService.accept(SlimService.java:124)
    at fitnesse.slim.SlimService.startWithFactory(SlimService.java:76)
    at fitnesse.slim.SlimService.main(SlimService.java:56)
Children