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

  • |populate |FILE_UPLOAD |field |[1] |with |C:\test.doc | is correct.
    can you send a screen dump and some more of your FirNesse code.
  • The error hint shows that the field is Read only can you try checking manual upload?
  • 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)
  • Hi,
    Try to shorten the path C:\AutomatedTesting\FitNesseForAppian\docs\sample.docx? to for example C:\AutomatedTesting\sample.docx
    Also make sure the file have the correct security settings, so the script can read the file.
  • 0
    Appian Employee
    in reply to jasong235
    Was this resolved? Please mark the suggestion that worked for you.
  • Any resolution on this? I'm (suddenly) seeing this on a dropdown and a date field. Can't see anything in Design relative to what changed or what would make Fitnesse think the fields are read only.